Redirect & Forward

ikyeong·2023년 5월 21일
1

Spring-Study

목록 보기
6/9

redirect

redirect 명령이 들어오면 3xx 응답코드를 가진 응답헤더를 반환해 브라우저에게 해당 location으로 이동하라는 응답을 보낸다
->브라우저에서 해당 URL로 이동 (requesetMethod는 GET)

forward

서버 내부에서 request를 해당하는 location으로 직접 전달하고 해당 location에서 처리 후 응답을 클라이언트에게 보낸다

💡 스프링은 forward를 이용해 MVC 구현

controller(URL1)가 처리하고 정보를 model(request)에 담아서 view(URL2)에 보냄

redirect vs forward

URL의 변화 여부객체의 재사용여부
redirectOX
forwardXO

JstlView

요청이 들어왔을때 controller의 반환값이 view의 이름이면 DispatcherServlet이 InternalResourceViewResolver에 전달
->InternalResourceViewResolver에서 prefix와 suffix를 반환해 DispatcherServlet이 JstlView로 전달
->JstlView에서 Model을 해당 View에 전달

💡 InternetResourceViewResolver는 servlet-context.xml 파일에서 수정할 수 있다.

<!-- webapp/WEB-INF/spring/appServlet/servlet-context.xml -->
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>

redirect View

요청이 들어왔을때 controller의 반환값이 redirect:/... 이면 DispatcherServlet이 RedirectView에 전달
->RedirectView에서 302 응답코드의 헤더를 반환하고 브라우저에서 해당 URL로 이동

internalResourceView

요청이 들어왔을때 controller의 반환값이 forward:/... 이면 DispatcherServlet이 InternalResourceView에 전달
->InternalResourceView에서 앞에 forward를 제외한 경로를 호출하고 DispatcherServlet에 알림 (내부에서 페이지 이동을 처리!!)
->이후는 일반 JstlView와 비슷하게 처리

0개의 댓글