Redirect와 Forward
Redirect는 수동으로 하는 요청1, 자동으로 보내는 요청2 총 2번의 요청이 발생하고
forward는 요청이 1번만 발생.
RedirectView
클라이언트로부터 요청이 들어오면 DispatcherServlet이 받아서 컨트롤러를 호출한다. 컨트롤러에서 메서드의 반환값이 redirect:~~ 이라면, DispatcherServlet이 RedirectView로 해당 값을 전달한다. 그러면 RedirectView는 아래 사진과 같이 응답을 생성해서 클라이언트로 전달해준다.
JstlView
컨트롤러에서 반환값이 뷰이름이면, 우선 DispatcherServlet이 값을 받아서 InternalResourceViewResolve한테 보낸다. 그러면 InternalResourceViewResolve가 이름을 해석해준다. 즉 뷰 이름이 registerForm일 경우, /WEB-INF/view/registerForm.jsp 로 반환해준다. 그러면 DispatcherServlet이 이름을 받아서 JstlView로 넘겨주고, JstlView가 해당 뷰파일에 Model을 넘겨준다!
InternalResourceViewResolve 는 스프링에서 servlet-context.xml 파일에서 확인할 수 있다.
이 부분을 확인해보면 뷰이름 앞에 /WEB-INF/view/ 를, 뒤에 .jsp 를 붙여주는 걸 알 수 있다.
InternalResourceView
InternalResourceView는 포워딩할 때 사용된다.
컨트롤러 메서드의 반환값이 forward:~~ 라면, DispatcherServlet이 반환값을 InternalResourceView로 전달해준다. 그러면 InternalResourceView가 해당 요청(아래 사진에서 /register/add)을 호출하라고 DispatcherSerlvet에 알려준다.
들어온 register/add 요청의 결과로 뷰이름이 반환되고, 그러면 앞전 설명과 마찬가지로 InternalResourceViewResolve가 뷰이름을 해석 후 DispatcherServlet에 전달하고, 이는 JstlView가 받아서 해당 뷰파일에 Model을 넘겨준다.
참조
https://fastcampus.co.kr/dev_academy_nks
스프링의 정석 : 남궁성과 끝까지 간다 | 패스트캠퍼스
국비지원 조기 마감 신화, 베스트셀러 'JAVA의 정석'의 저자 남궁성의 Spring 강의입니다! 오픈톡방과 카페에서 평생 AS를 제공하며 완강과 취업까지 도와드립니다. 지금 할인가로 확인하세요!
fastcampus.co.kr
'3. Back-end > 3-2. Spring MVC - 남궁성' 카테고리의 다른 글
Spring MVC - [ Session(세션) ] (0) | 2023.01.27 |
---|---|
Spring MVC - [ Cookie(쿠키) ] (2) | 2023.01.27 |
Spring MVC - [ EL표현식 + JS Template Literal ] (2) | 2023.01.23 |
Spring MVC - [ view-controller / servlet-context.xml] (0) | 2023.01.23 |
Spring MVC - [@GetMapping, @PostMapping] (0) | 2022.12.14 |