2-22 redirect와 forward

서현우·2022년 5월 15일
1

스프링의정석

목록 보기
22/85

1. redirect와 forwar의 처리 과정 비교

redirect

클라이언트에서 수동으로 write.jsp로 요청(request).
서버에서 300번대 응답헤더(Redirect)로 응답.
클라이언트에서 자동으로 login.jsp로 GET요청.
(처음 수동으로 GET/POST요청과 상관없이, Redirect는 무조건 GET요청으로 보냄)
(요청 2번, 응답도 2번)

forward

클아이언트에서 write.jsp로 요청.
write.jsp에서 login.jsp로 request, response를 저장하고 전달.
login.jsp에서 클라이언트로 응답.
(요청 1번, 응답 2번)
request는 Model
write.jsp는 Controller
long.jsp는 view

RedirectView

Spring에서는 요청이 들어오면 DispatcherServlet이 처리하고,
Controller으로 보내는데, 응답에 redirect문자열이 있으면,
RedirectView가 응답헤더에 300을 추가하고 클아이언트로 응답.
클라이언트는 Location으로 자동으로 다시 요청.

JstlView

클라이언트에서 요청이 들어오면 DispatcherServlet이 처리를 하고,
Controller로 보냄. Controller에서 registerForm뷰 이름을 반환.
DispatcherServlet에서 InternalResourceViewResolver로
registerForm이름이 맞는지 보내고, /WEB-INF/views/registerForm.jsp를
DispatcherServlet으로 보냄.
그다음 DispatcherServlet에서 JstlView보내고, 처리 후 모델을 registerForm.jsp로 보냄.
registerForm.jsp에서 클아이언트로 최종 응답.

profile
안녕하세요!!

0개의 댓글