sendRedirect – 클라이언트가 인지함
이 메소드는 페이지 전환을 할때, 웹 컨테이너가 전환될 페이지의 URL을 부라우져로 보내어 다시 요청하게 만드는 방식으로 작동한다. 즉, A페이지를 요청했을 때, 이에대한 응답으로 B 페이지의 URL 이 전송되고 브라우저는 새로이 B 페이지를 요청하게 된다.
따라서 사용자는 페이지가 redirect 되었다는 것을 알 수 있다. 반면 A 페이지에서 B 페이지로 redirect 될때, A 페이지에서 포함된 파라미터 등은 B 페이지로 자동으로 전달되지 않는다.
forward – 클라이언트가 모름
이 메소드는 페이지 전환시 클라이언트를 거치지 않고 웹 컨테이너가 서버 내부에서 직접 다른 jsp 나 Servlet 를 호출해서 처리하는 방식이다. 클라이언트를 거치지 않고 페이지가 redirect 되므로 사용자는 페이지가 전환되었다는 것을 알지 못한다. 즉, A 페이지를 요청했는데 응답으로 B 페이지가 전송되는 방식이다.
따라서 A 페이지에서 사용된 파라미터가 B 페이지에 그대로 전달되며, 통신 과정이 생략되므로 좀더 빠르다고 할 수 있다. 단, URL 의 변화를 알 수 없다.
1. forward
RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);
이런식으로 되구요…
2. sendRedirect
response.sendRedirect(url);
일케됩니다.
둘의 차이를 말씀드리면…
dispatcher.forward(request, response); 에서 보시는 바와같이 이녀석은
request 의 Attribute를 싫어나를 수 있습니다.
(ex : request.setAttribute(“test”,”테스트”); )
반면에 sendRedirect이넘으로 파라미터를 넘기는 방법은 get 방식처럼
url?test=테스트 이렇게만 가능하죠 ^^;
1.
test1.jsp
test.jsp
<%
String [] arr = (String[])request.getAttribute("test");
for(int i=0;i<arr.length;i++){
out.println(arr[i]+"
“);
}
%>
2. sendRedirect
test1.jsp
test.jsp
출처: http://playgame.egloos.com/284355

16 Replies to “JSP Servlet : sendRedirect, forward 차이점”