RequestDispatcher & sendRedirect 방식

반응형
orward와 redirect의 차이점을 알기쉽게 말해주는 좋은 글




퍼온글...http://cafe.daum.net/flowlife/HqLp/5
----------------------------

RequestDispatcher는 일련의 작업이 완료된 후 다음페이지로 이동할 경우, 서버에서 서버로 페이지를 요청하여 실행한 후 응답을 하도록 한다. 이럴 경우 네트워크 Traffic이 한번 발생하게 되며, 서버에서 서버로 페이지를 요청하기 때문에 String만이 아닌 객체의 전달도 가능하다.

다음 두 개의 그림을 보면 두 가지 방식의 차이점을 명확히 알 수 있을 것이다.

 

*sendRedirect 방식*

웹브라우저 -① 요청보내기-> a.jsp

웹브라우저 <----------  a.jsp (서버)

웹브라우저 - b.jsp요청--> b.jsp

 

*RequestDispatcher 방식*         

웹브라우저 -①요청--> a.jsp ---> b.jsp

웹브라우저  <-③응답결과전송-----  b.jsp

 

RequestDispatcher를 이용할 경우 한번의 요청으로 인해 모든 작업이 서버에서 처리되기 때문에 실행속도는 Response sendRedirect를 사용할 때보다 빠르다. 또한 Response sendRedirect을 이용할 경우에는 String밖에 전달 할 수 없다. , 객체를 다른 페이지에 전달하는 것이 힘들다.

물론 세션을 이용하면 가능하지만 세션 또한 시스템의 메모리를 차지하기 때문에 매번 세션을 이용하는 것은 좋은 방법은 아니다.

이에 대한 대안으로 RequestDispatcher를 이용하면 된다. RequestDispatcher를 이용하면 서버에서 모든 작업이 처리되기 때문에 서버상에서의 객체의 전달이 가능하다.

하지만 RequestDispatcher를 이용할 경우 문제점이 있다. RequestDispatcher를 이용할 경우 응답이 이루어진 후의 URL이 처음 클라이언트가 요청한 URL로 지정되어 있기 때문에 문제가 되는 경우가 있다.

한가지 예로 사용자의 정보를 가져오거나 사용자의 정보를 볼 경우에는 문제가 되지 않는다. 하지만 사용자가 회원가입을 할 경우 똑같은 정보가 같은 페이지에 요청되기 때문에 같은 정보가 저장되는 경우가 있다.

개발자들이 게시판을 이용할 때 요청속도가 느려 Refresh를 계속해서 누를 경우 똑같은 글이 계속해서 저장되는 것을 경험한 적이 있을 것이다. RequestDispatcher를 이용할 경우에는 같은 문제가 발생하는 경우가 많다.

---------------------------------
사용자 삽입 이미지

getNamedDispatcher()의 예.
 
ServletContext context = getServletContext();
RequestDispatcher servlet = context.getNamedDispatcher("MyServlet");
servlet.forward ( request, response);
 
getRequestDispatcher()의 예.
 
RequestDispatcher view = request.getRequestDispatcher("tools/babo.jsp");
view.forward( request, response);
 
이 메소드에 대한 문자열 매개변수는 사용자가 원래 요청한 URL의 현재 디렉토리에서
상대적인 URL을 사용한다. 따라서 이 코드를 URL /store/hardwareShop에 매핑된
서블릿에서 실행하면 실제 URL은 /store/tools/babo.jsp가 된다.
 
         
             출처 :  썬의 교육사이트(http://www.sunwlc.co.kr) 의
                         Web Component Development Using Servlet,JSP & Struts 강좌 중 21강좌에서.

출처: http://blog.naver.com/bluejames77?Redirect=Log&logNo=80029686741
---------------------------------------------------------
반응형

Top