퍼온글...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로 지정되어 있기 때문에 문제가 되는 경우가 있다.
한가지 예로 사용자의 정보를 가져오거나 사용자의 정보를 볼 경우에는 문제가 되지 않는다. 하지만 사용자가 회원가입을 할 경우 똑같은 정보가 같은 페이지에 요청되기 때문에 같은 정보가 저장되는 경우가 있다.
---------------------------------
RequestDispatcher servlet = context.getNamedDispatcher("MyServlet");
servlet.forward ( request, response);
view.forward( request, response);
상대적인 URL을 사용한다. 따라서 이 코드를 URL /store/hardwareShop에 매핑된
서블릿에서 실행하면 실제 URL은 /store/tools/babo.jsp가 된다.
출처: http://blog.naver.com/bluejames77?Redirect=Log&logNo=80029686741
---------------------------------------------------------
'IT' 카테고리의 다른 글
html 저장시 utf-8 헤더를 붙였으나 브라우저 encoding 설정이 자동인 경우 한글이 깨지는 현상 (0) | 2009.03.31 |
---|---|
인터넷보안설정PC - 팝업차단 (0) | 2009.03.31 |
천리안 서버 호스팅에서 DB의 한글값이 깨지는 현상 (0) | 2009.03.31 |
Recent Comment