반응형

Redirect

브라우저가 응답을 받은 후 다시 보낼 새로운 URL 포함.
완전히 새로운 요청을 하기 때문에 Request Attribute 가 가지고 있는 객체는 Redirect 발생 시 소멸된다.
추가적으로 발생한 왕복 처리 때문에 Forward 보다 느리다.
URL 에 파라미터가 보이므로, 중요한 정보는 포함하지 않도록 유의해야 한다.

redirect 는 웹브라우저에게 재접속 명령을 내리고, 새로운 페이지로 재접속하게 된다.
(‘딸깍’소리와 함께 사용자가 다시 요청한 것같은 효과)
커넥션을 다시 맺게 되므로, 기존의 request 정보를 다 잃게 되며 사용자 주소창에 새로운 주소로 표시된다.
redirect 는 기존 페이지의 모든 코드를 다 실행한다.

1) 사용 예
- response.sendRediret (request.encodeRedirectURL ("url.do?...")

2) spring 에서 사용할 때.
public String redirect() {
 return "redirect:/url.do";
 // return new ModelAndView("redirect:url.do");
}


Forward

Forward 되는 해당 요청이 다른 Servlet 에 전달된다.
이 때, Client 는 다른 Servlet 에서 이 요청을 처리할 것을 모른다.
Client 와 통신 없이 서버에서만 처리되기 때문에, Redirect 보다 더 나은 성능 보인다.
Forward 한 후에도 객체를 사용할 수 있으므로, 객체가 가지고 있던 Request Attribute 를 사용할 수 있다.
URL 에는 변화가 없으므로 URL 과 Client Application 이 일치하지 않을 수 있다.
이는 Forward 가 발생한 사실을 Client 가 알지 못하기 때문이다. Refresh 를 할 경우, 정확하지 않은 요청이 발생할 수 있다.

forward 는 웹 컨테이너 상에서 새로운 페이지로 이동만 있다.
사용자에겐 response 가 오기전에 서버내에서 이루어지므로 사용자 주소창에 새로운 페이지가 표시되지 않는다.
forward 는 서버내에서 자기 할일이 새로운 페이지로 넘어가는 것이므로 기존 페이지의 forward 이후의 코드가 실행되지 않는다.

1) 사용 예 : RequestDispatcher dispatcher = request.getRequestDispatcher("/result.jsp?....");
          dispatcher.forward(request, response);
(RequestDispatcher.forward() 는 Client 에 어떠한 결과도 전달하지 않았을 경우 사용 가능하다.)

2) spring 에서 사용할 때.
//searchVO 를 유지하기 위해 @ModelAttribute 로 설정한 것도 참고
public String forward(@ModelAttribute("searchVO") DefaultVO searchVO) {
 return "forward:/url.do";
 //  ModelAndView("forward:/url.do")
}


참고 : http://kowoonz.springnote.com/pages/364813

반응형

'프로그래밍 > Java' 카테고리의 다른 글

String -> Json  (0) 2011.09.19
http request post data 읽기.  (0) 2011.09.19
[Spring3] applicationContext.xml 설정 시 에러.  (0) 2011.07.25
[안드로이드] 개발 환경 구축  (0) 2011.06.24
[링크] unsigned data type  (0) 2011.05.18

+ Recent posts