특정 servlet에서 다른 servlet으로 페이지를 전환하는 방법을 배웁니다.
화면 전환 방법
include()
- include()는 다른 servlet을 현재 servlet에 추가하는 방법.
- 현재 servlet코드와 다른 servlet코드가 공존한다.
forward()
- forward()는 다른 servlet으로 이동하는 방법.
- 이동한 servlet의 코드만 존재한다.
예제
includeTest.java
를include()
와forward()
로 각각 호출하는 예제.
includeTest.java
public class IncludeTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("<p>This is include test</p>");
}
}
- include test 코드
- include와 forward로 호출합니다.
DispatchTest.java ( include() 사용 )
public class DispatchTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>this is dispatch</title>");
out.println("</head>");
out.println("<body>");
// include(가져오기) A형태를 유지하고 B를 가져온다
// forward(이동) A에서 B로 무조건 이동해버린다. -> 가볍다. ( 데이터를 가져가지 않는다. )
out.println("<p>이 다음으로 include 처리를 시작합니다.</p>");
String disp = "includeTest";
RequestDispatcher dispatcher = req.getRequestDispatcher(disp);
// dispatchTest 상태에서 includeTest를 불러온다.
dispatcher.include(req, resp);
out.println("<p>include 가 완료됐습니다.</p>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
- 현재 servlet에서 includeTest를 include로 호출합니다.
결과
이 다음으로 include 처리를 시작합니다.
This is include test
include가 완료됐습니다.
- 결과에서 확인할 수 있듯이 includeTest의 코드가 dispatchTest코드 사이에 include 되었다.
DispatchTest.java ( forward() 사용 )
public class DispatchTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>this is dispatch</title>");
out.println("</head>");
out.println("<body>");
// include(가져오기) A형태를 유지하고 B를 가져온다
// forward(이동) A에서 B로 무조건 이동해버린다. -> 가볍다. ( 데이터를 가져가지 않는다. )
out.println("<p>이 다음으로 include 처리를 시작합니다.</p>");
String disp = "includeTest";
RequestDispatcher dispatcher = req.getRequestDispatcher(disp);
// dispatchTest 상태에서 includeTest로 이동한다.
dispatcher.forward(req, resp);
out.println("<p>include 가 완료됐습니다.</p>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
- 현재 servlet에서 includeTest를 forward로 호출합니다.
결과
This is include test
- 결과에서 확인할 수 있듯이 includeTest로 화면이 완전히 전환되었다.
Comments