본문 바로가기

🌈 백엔드/스프링 MVC

스프링_Redirect VS Forward 요청 응답 과정

반응형
SMALL

 

 

 

[1] 응답과정 


(1) redirect 

첫번째 응답으로 상태코드 300이 뜨면서 다른 URL로 재요청을 해야한다는 응답을 하고 

다른 URL : /ch2/login.jsp를 알려준다. 

클라이언트의 브라우저는 자동으로 2번째 요청을 하게되고 알맞는 응답을 받게된다 

 

(2) forward 

다른 URL 요청을 응답하지 않고 Forward를 이용하여 login.jsp에 자동으로 요청메세지를 전달하여 최종 응답하게 한다

 

[2] 응답 view 과정


(1) 스프링 : RedirectView 

회원가입화면에서 정보를 입력하여 다음화면인 register/save 을 요청했을때 

DispatcherServlet이 받아서 응답을 처리하는 Controller에서 유효성검사를 했을때 실패했다면

그 전 화면인 register/add를 불러오기위해 Redirect 불러오고

Redirect는 RedirectView 에서 [HTTP/1.1 302 ~] 라는 응답을 만들어서 응답을 클라이언트에 전송한다. 

 

(2) JST : JSTlView

클라이언트가 register/add를 요청하면 DistacherServlet이 받아서

응답을 처리하는 controller에서 해당하는 뷰 이름(registerForm) 을 호출한다

DispatcherServlet에서 InternalResourceViewResolver에서 뷰 regisgerForm을 해석해서

해석한 결과인 jsp경로를 JSTlview에서 받아서 Model을 통해 jsp파일로 응답한다

 

(3) Forward : InternalResouceView 

클라이언트가 register/save를 요청하면 DistacherServlet이 받아서

응답을 처리하는 controller에서 해당하는 뷰 이름(registerForm) 을 호출한다

DispatcherServlet에서 forward 코드를 확인하고 InternalResourceView 에서 /register/add를 불러온다 

DispatcherServler에 받아와서 InternalResourceViewResolver에서 뷰 regisgerForm을 해석해서

해석한 결과인 jsp경로를 JSTlview에서 받아서 Model을 통해 jsp파일로 응답한다

 

 

[3] 요청과 응답 실제 확인하기 


(1)redirect 요청응답 

 

이의 경우 요청2를 보낼때는 다른 주소로 요청을 보내게된다 

이유는 GET으로 보내기 때문이다. 

 

 

[4] Forward 코드 수정 


(1) 리턴값 Forward 로 수정 

 

 

(2) POST 방식으로 요청/응답 되도록 전체 수정한다 

 

 

servlet-context.xml에서 GET 방식의 뷰 컨트롤러 등록 부분을 삭제하여 아래와 같이 유지한다 

 

(3) 요청 / 응답 메세지 확인시 POST 방식으로 Forward 적용이 되었다 

동일하게 save 주소를 받아서 주소도 바뀌지 않았고 

상태코드 200으로 정상으로 받았다 

 

반응형
LIST