BackEnd/WEB

국비_DAY58

Leo.K 2022. 5. 23. 13:07

Servlet or JSP 페이지 이동 방법 

1. Redirect 방식 (insert, update, delete명령은 무조건 redirect방식으로 응답한다.)

a.jsp내에서 response.sendRedirect("b.jsp);를 입력한다. 

이는 사용자의 요청 정보를 a.jsp가 받고 재요청 정보를 사용자에게 응답해주고 최종적으로 요청된(b.jsp)페이지 정보를 클라이언트 측에서 변경된 URL을 통해서 확인할 수 있다. 

예를 들어 게시판을 게시글을 등록, 수정, 삭제 등의 작업을 a.jsp에 요청을 하면 전달받은 사용자의 요청정보를 통해 DB에 접근하여 수정하고 사용자에게 수정된 정보를 확인하도록 게시글 작성하기(a.jsp)에서 게시글 목록보기(b.jsp)로 재요청(redirect) 정보를 응답한다. 

고객(사용자)이 고객센터(a.jsp)에 노트북이 고장 났다고 전화를 했다. 하지만 a.jsp는 저희 부서가 아닙니다하고 담당 부서의 전화번호(b.jsp의 접근 방법(URL))를 알려주고(재요청 정보로 b.jsp의 주소를 준다. ) 해당 번호로 전화하라고(b.jsp로 재요청해라) 안내한다. 

a.jsp와 b.jsp의 request의 객체를 각각 독립적인 객체이다. 

 

2. Dispatcher 방식(Model2 패턴. a.jsp(business data logic), b.jsp(View)) (조회Select하는 경우에만 사용한다.)

a.jsp내에서 request.getRequestDispatcher("b.jsp"); request.forward(request, response)

최초로 사용자에게 전달받은 요청 사항을 a.jsp가 b.jsp에게 전달(forward)한다. 최초로 a.jsp가 요청받은 정보를 그대로 b.jsp에게 공유한다.

request를 이용해서 서버 내부에서 호출하는 방법으로, URL이 변경되지 않기 때문에 클라이언트측에서 확인할 수 없다. 

고객(사용자)이 고객센터(a.jsp)에 노트북이 고장 났다고 전화를 했다. 하지만 a.jsp는 저희 부서가 아닙니다하고 담당 부서의 전화로 연결해준다.(회사 내선 번호로 직접 연결해준다.) 

a.jsp와 b.jsp의 객체는 같은 데이터를 공유하는 객체이다. 

 

Model 1 -> Model2(요청 전달 -> 가공 -> 바인딩 -> 출력)

하나의 jsp파일에 buisness, presentation logic을 작성하는 Model1구조를 각각의 역할(가공 & 출력)을 분할하여 Model2로 변경하는 과정 

1. input.html : 기본적으로 사용자에게 보여지는 페이지에서 사용자가 입력값을 파라미터로 서블릿 파일로 전달한다. 

2. 만들어진 서블릿 파일은 1에서 전송한 사용자의 요청 정보를 받아서 가공한다. 이후에 공유객체(request)를 사용하여 사용자에게 전달받은 요청 정보를 가공한 데이터를 공유하기 위해 request.setAttribute를 한다.(request binding)

3. 서블릿 파일에서 출력을 담당하는 jsp 파일로 forward(서블릿에서 가공한 데이터를 공유[연결] = 호출)하면서 출력을 담당하는 jsp 파일을 호출한다.

4. 출력을 담당하는 jsp파일은 서블릿이 가공하여 저장한 데이터를 공유객체에서 읽어와(getAttribute를 써도 되고 안써도 된다.) EL 표현식으로 표현한다. 

'BackEnd > WEB' 카테고리의 다른 글

웹DB_비번, 줄바꿈처리,AJAX_DAY63  (0) 2022.05.30
DBCP_웹DB_국비_DAY59  (0) 2022.05.24
JSTL_국비_DAY57  (0) 2022.05.20
EL_국비_DAY56  (0) 2022.05.19
JSP_국비_DAY55  (0) 2022.05.18