티스토리 뷰

https://www.edwith.org/boostcourse-web/lecture/16705/

 

[LECTURE] 2) forward : edwith

들어가기 전에 WAS의 서블릿이나 JSP가 요청을 받은 후 그 요청을 처리하다가, 추가적인 처리를 같은 웹 어플리케이션안에 포함된 다른 서블릿이나 JSP에게 위임하는 경우가 있습니... - 부스트코스

www.edwith.org

 

Forward

요청의 처리를 다른 서블릿으로 넘겨주는 것.

redirect와 달리 처음 요청에서 생성된 request, response 객체를 그대로 이용하며 새로운 request, response 객체사 생성되지 않는다. 웹브라우저의 url도 변하지 않는다.

구현

Servlet1이 요청을 처리한 후 HttpServletRequest에 결과를 저장하여 HttpServletResponse와 함께 같은 웹 어플리케이션 안에 있는 Servlet2에게 전송(forward)한다.

예제

FrontServlet에서 1에서 6까지 랜덤 숫자를 생성하여 NextServlet로 forward하는 예제

FrontServlet

NextServlet

int dice = (Integer)request.getAttribute("dice");

 

Servlet & JSP 연동

Servlet은 로직을 구현하기 쉽지만 HTML을 출력하기엔 불편하다.

JSP는 HTML을 구현하기 쉽지만 로직을 구현하기엔 불편하다.

따라서 로직은 Servlet에서 처리하고 결과를 JSP로 forward하는 방식을 자주 사용한다. 이를 Servlet과 JSP 연동이라 한다.

구현

Servlet으로 forward할 때와 같으나 RequestDispatcher 경로만 .jsp로 설정해 주면 된다.

LogicServlet.java

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/result.jsp");
requestDispatcher.forward(request, response);

result.jsp

java 코드로 출력

int v1 = (int)request.getAttribute("v1");
<%=v1%>

EL 표기법 출력

${v1}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함