1. Forward란?
위처럼 client가 servlet1에 어떠한 요청을 보냈다고 하자. 이때 servlet1이 요청의 일정 부분만 처리하고 나머지를 다른 servlet에 넘겨주었다. 이렇게 넘겨주는 작업을 Forward라고 부른다. 나머지 작업을 넘겨받은 servlet은 작업을 모두 마치고 응답을 만들어서 client에게 보내주게 된다.
2. 예제 코드
// Servlet01.java의 service 메서드
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int randValue = (int)(Math.random()*10)+1;
request.setAttribute("randValue", randValue);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Servlet02");
requestDispatcher.forward(request, response);
}
Servlet01에서는 먼저 1~10까지의 난수를 생성한다. 난수 생성 후 해당 정보는 이후 forward를 통해 다른 Servlet으로 넘길 것이므로 request에 해당 정보를 추가해야 한다. 이때 request.setAttribute()를 사용한다. forward를 위해서는 위처럼 request.getRequestDispatcher()를 통해 RequestDispatcher 인스턴스를 생성해야 한다. 만든 requestDispatcher 객체의 forward를 통해 forward를 수행할 수 있다.
// Servlet02.java의 service 메서드
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Forward</title></head>");
out.println("<body>");
int randValue = (int)request.getAttribute("randValue");
out.println("randValue : "+randValue);
out.println("</body>");
out.println("</html>");
}
이후 Servlet02에서는 위와 같은 작업을 수행한다. 이전에 넘겨준 randValue는 위처럼 request.getAttribute()를 통해 가져올 수 있다.
References
'BackEnd > JSP & Servlet' 카테고리의 다른 글
[JSP] EL(Expression Language) (0) | 2022.12.23 |
---|---|
Servlet과 JSP 연동 (0) | 2022.12.23 |
Redirect란? (0) | 2022.12.22 |
Scope (Page, Request, Session, Application) (0) | 2022.12.22 |
JSP 내장 객체 (0) | 2022.12.22 |