웹 프로그래밍에서 서블릿이 주로 사용되는 영역은 MVC 패턴 중 컨트롤러에 해당한다. 컨트롤러는 사용자의 요청을 받아 데이터베이스와 연동 등의 작업을 처리한 다음 결과에 따라 적절한 페이지로 전환해주는 기능을 담당한다. 이때 페이지 이동과 함께 페이지 간 정보 공유 기법에 대한 이해가 필요하다.
컨트롤러에서 사용자 요청을 처리한 다음에는 적절한 뷰로 이동할 수 있어야 한다. 이때 뷰에서 보여줄 데이터를 포함해서 이동해야 하는 경우와 그렇지 않아도 되는 경우가 있다.
데이터를 포함하지 않는 경우 해당 페이지로 바로 리디렉션할 수 있다. 혹은 세션에 데이터를 저장한 경우라면 세션이 유효한 동안 모든 페이지에서 세션 정보를 참조할 수 있어 리디렉션을 통해서도 데이터 참조가 가능하다.
JSP, 서블릿 모두 response.sendRedirect()
를 사용할 수 있다.
response.sendRedirect("main.jsp");
데이터를 포함하는 경우 request 속성으로 데이터를 넣은 후 원하는 페이지로 포워딩해야 한다. 데이터 활용 목적에 따라 session이나 application을 사용할 수도 있으며 여러 데이터를 포함하는 것도 가능하다.
데이터를 포함하여 포워딩할 경우 아래와 같다
<%
request.setAttribute("key", value);
pageContext.forward("userInfo.jsp");
%>
doGet(...) {
...
request.setAttribute("key", value);
RequestDispatcher dispatcher = request.getRequestDispatcher("userInfo.jsp");
dispatcher.forward(request, response);
}
@GetMapping("userinfo")
public String getMemberInfo(int id, Model model) {
...
model.addAttribute("key", value);
return "userInfo";
}