redirect에 의해 자동으로 요청되는 것은 GET방식 redirect은 300번대
redirect는 헤더만 있고 바디가 없다. location에 어디로 리다이렉트해야하는지 알려준다.
브라우저가 자동으로 다시 리다이렉트한 위치로 요청한다.
- 요청 (수동) GETorPOST
2.300 redirect
3.다시 요청(자동) GET(무조건 GET)
요청이 2번이고 응답도 2번이다.
foward는 클라이언트가 요청하는데 jsp가 자신이 처리할 것이 아니면 다시 다른 jsp에게 forward 즉, 전달한다. 이때 전달하는 내용은 사용자가 request한 내용을 그대로 전달한다. 그 과정에 전달하는 jsp 무언가를 저장할 수 도 있다. 그리고 제대로 된 jsp에서 다시 응답한다.
- 고객 요청(request)
2.잘못받은 jsp가 그대로 request를 맞는 jsp에 전달(foward)
3.제대로 받은 jsp에서 응답
reidect와는 다르게 request가 1개인다.
request 객체가 Model 역활을 하고 있다. login.jsp에서 View역할 write.jsp에서 Controller역활을 한다. 사실상 MVC 구현이라고 생각하면 된다.
고객은 어떤 jsp에서 처리했는지 알수없다.
스프링에서 처리하는 방법이다. 요청을 받으면 DispatherServlet이 받고 Contrller를 불러온다
호출했느데 유효성 통과를 못해서 리다이렉트를 반환하면 DispatherServlet은 받환받은 문자열에 redirect가 있어서 이것을 RedirectView에게 넘긴다. 그러면 RedirectView는 응답헤더를 만들어낸다. 이것을 응답으로 반환한다. 그리고 브라우저는 헤더에 있는 리다이렉트 Location으로 재요청한다.
fowarding할때 사용되는 View이다.요청을 받으면 DispatherServlet이 받고 Contrller를 불러온다. 만약 유효성 통과를 못했는데 리턴에 "foward:/~~~"가 있으면 DispathcerServlet이 InternelResourceView에 전달하고 InternelResourceView가 요청받은 위치를 호출하고 다시 DispatherServlet에 전달한다. fowarding를 InternelResourceView가 처리하는 것이다.
이런것도 있다만 알아두자.