redirect와 forward
1. redirect와 forward의 처리 과정 비교
1) redirect
-
status-code : 300 (redirect = 다른 URL로 재요청)
-
브라우저가 자동으로 Location을 읽어서 해당 위치로 이동!
-
과정 : 1. 요청 -> 2. 응답 => 3. 요청 -> 4. 응답
-
어떤 요청이든 redirect로 의한 호출은 get으로 호출
-
요청 / 응답 모두 2번!
2) forward
- 클라이언트 요청시, 서버 처리 후 일부 요청을 forward location에 전달
- 과정 : 1. 요청 -(전달)-> 2. 요청 (forward) -> 3. 응답
- write.jsp (Controller 역할 - 처리) / request (Model - 객체) / login.jsp (View - 최종 응답)
- 이 때, 두번째 요청시 첫번째 요청의 response 내용을 함께 전달!
ex) 잘못된 요청을 맞는 부서에 자동으로 전달~
- 스프링이 forward를 통해 MVC를 구현함
2. RedirectView
1) 스프링 redirect처리 과정
- /ch2/register/save (요청) -> DispatcherServlet -> Controller (요청 처리를 위한 컨트롤러 호출) -> redirect:/register/add 응답
- RedirectView 응답 생성
(응답 헤더)
HTTP/1.1 302
Location:/ch2/...
3. JstlView (JSP뷰 처리)
- /ch2/register/add (요청) -> DispatcherServlet -> Controller (요청 처리를 위한 컨트롤러 호출) -> registerForm 응답 -> DS가 해당 응답을 InternalResourceViewResolver에게 전달 -> registerForm 해석 -> 해당 Resolver가 해당 파일의 진짜 이름을 DS에게 전달 /WEB-INF/views/registerForm.jsp -> JstlView가 해당 .jsp에게 Model을 넘겨줌 (JSP 뷰)
4. InternalResourceView (forward)
1) 과정
- /ch2/register/save (요청) -> DispatcherServlet -> Controller (요청 처리를 위한 컨트롤러 호출) -> forward:/register/add ->