dev/Spring

[Spring] redirect, forward

dev_Step 2022. 6. 9. 15:23

 

1. redirect

  1) 요청   :   /ch2/write.jsp -----> write.jsp 

      // 브라우저가  자동으로 2) 으로 재요청을 실시한다 GET방식으로  (redirect는 GET방식임.)

  2) 응답  :    write.jsp 

  3) 요청  :   /ch2/login.jsp

  3) 응답  :   login.jsp

 

HTTP/1.1 302    //redirect 300번대의 요청   // 다른 URL로 재요청 

Location : /ch2/login.jsp    --- header  O   // body X

content-Language : ~

Content-Length :  ~

redirect
jstlView

 

// redirect시에 2번의 요청이 들어 간것을 확인할 수 있다.

요청 주소창의 URL이 변경된다 재용청하는 것으로.

전 : 처음 요청된 URL
브라우저가 자동으로 재요청

 

 

general
response
재요청후 200 응답코드

 

 

 

 

2. forward   =  요청을 받아서 요청된 내용을 확인하여 해당내용 처리가 필요한 JSP로 요청내용과 같이 보낼떄 사용

   1. 요청(request) :  /ch2/write.jsp   (Controller역할을 해줌)

         /// write.jsp 가 자료를 더 저장할수 있음. 

   2.  forward(request가 model역할을 해줌) : 요청을 그대로  login.jsp로 전달해준다.

   3. 응답 : login.jsp

forward : internalResourceView

 

//   save 요청을 했고 isValid에 의해서 forward 되었다   /register/add 로

이때 forward (전달) 했다.   

forward는 요청을 1번밖에 하지 않으므로, 처음 요청한 URL /register/save로 나와 있고

실제 페이지는 전달한 페이지 register/add 화면이 나오게 되었다.

 

 

============================================================================================

정리하자면 

redirect는 요청을 2번 하고, 이를 처리해주는데 RedirectView 라는 클래스로 HTTP 응답을 만들어서 

브라우저에게 전달하면 자동으로 요청을 해준다.

즉 내가 요청한 내용을 redirect하면 redirect한 페이지로 재요청해준다.

이때 Redirect되는 요청은 "GET" 요청 밖에 되지 않는다.

2번 요청되기 때문에 URL창에 뜨는건 redirect된 URL이 표시가 된다.

 

foward는  사용자의 요청에 대해서  요청을 그대로 다른 페이지로 전달해주는것으로, 마치 내가 전화를 걸면 해당 부서 사람이 다른부서 사람에게 자동으로 전달해주는 것같은 느낌이라고 생각하면된다.

이때 요청한 데이터는 forward된(전달) 페이지에서도 사용할 수 있으며,  처음 요청한 페이지에서 데이터를 만들어서 다음페이지로 전달할 수 있다.