본문 바로가기

개발

서블릿의 포워드 방법

728x90

 

 

포워드기능

하나의 서블릿에서 다른 서블릿이나 jsp로 연동하는 방법

 

종류

Redirect

웹브라우저에 재요청하는 방식

@WebServlet("/first")
public class FirstServlet extends HttpServlet{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
                         throws ServletException, IOException {
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out = response.getWriter();
      // 1. sendredirect 
      response.sendRedirect("second");    }
}

 

 

refresh

웹브라우저에 재요청하는 방식, addheader 메소드로 Redirect 설정 후 일초 후 이동

 

@WebServlet("/first")
public class FirstServlet extends HttpServlet{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
                         throws ServletException, IOException {
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out = response.getWriter();  
      response.addHeader("Refresh","1;url=second");
   }
}

 

location

자바스크립트에서 재요청

하단의 예시의 경우 name이라는 파라미터를 넘겨 받을 수 있게 함

 

@WebServlet("/first")
public class FirstServlet extends HttpServlet{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
                         throws ServletException, IOException {
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out = response.getWriter();
      out.print("<script type='text/javascript'>"); 
      out.print("location.href='second?name=lee';");
      out.print("</script>");
   }
}

 

dispatch

서블릿이 직접 쓰는 요청방법

dispatcher로 forwarding할시, 별도로 주소 변경은 이뤄지지 않는다

나중에 모델2 방식에서 포워드 할 때 많이 사용 

위에서 parameter로 넘기고 싶을 때도

second?name=lee

라는 방식으로 포워딩 가능

@WebServlet("/first")
public class FirstServlet extends HttpServlet{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
                         throws ServletException, IOException {
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out = response.getWriter();
      RequestDispatcher dispatcher = request.getRequestDispatcher("second");
      dispatcher.forward(request, response);
   }
}
728x90