본문 바로가기
Spring

forward & redirect

by seeker00 2021. 7. 1.

forward

forward

출처) http://java.scwcd.jobs4times.com/Web-Container-Model.html

WAS의 서블릿이나 JSP가 요청을 받은 후 그 요청을 처리하다가, 추가적인 처리를 같은 웹 어플리케이션안에 포함된 다른 서블릿이나 JSP에게 위임하는 경우, 이를 포워드(forward)라고 한다

  • request, response 객체가 한 번 생성된다, 요청과 응답이 하나다
  • url이 변경되지 않는다

foward 진행순서

  1. 웹 브라우저에서 Servlet1에게 요청을 보냄
  2. Servlet1은 요청을 처리한 후, 그 결과를 HttpServletRequest에 저장
    • Servlet1에서 처리한 결과가 있다면, 이는 지역변수로 처리되었을 것이므로, request 객체를 이용해 값을 저장하고 Servlet2에 전달해야 한다
  3. Servlet1은 결과가 저장된 HttpServletRequest와 응답을 위한 HttpServletResponse를 같은 웹 어플리케이션 안에 있는 Servlet2에게 전송(forward)
    • 인자로 request, response를 전달한다
  4. Servlet2는 Servlet1으로 부터 받은 HttpServletRequest와 HttpServletResponse를 이용하여 요청을 처리한 후 웹 브라우저에게 결과를 전송

redirect

redirect

리다이렉트는 HTTP프로토콜로 정해진 규칙
서버는 클라이언트의 요청에 대해 특정 URL로 이동을 요청할 수 있고 이를 리다이렉트라고 한다.

  • 서버는 클라이언트에게 HTTP 상태코드 302로 응답하며 이때 응답 객체 헤더 내 Location 값에 이동할 URL 을 추가한다
  • 클라이언트는 서버로부터 받은 상태 값이 302(리다이렉션 응답)이면 헤더(Location)에 포함된 URL로 재요청을 보내며 이때 브라우저의 주소창은 새 URL(헤더의 Location 값)로 바뀌게 된다
  • 서블릿이나 JSP는 리다이렉트하기 위해 HttpServletResponse 클래스의 sendRedirect() 메소드를 사용한다
  • 크롬의 개발자 도구 Network 탭에서 이러한 요청과 응답결과(리다이렉션)를 확인할 수 있다
  • 참고) https://developer.mozilla.org/ko/docs/Web/HTTP/Redirections

'Spring' 카테고리의 다른 글

Java config를 이용하여 스프링 컨테이너(ApplicationContext) 설정하기  (0) 2021.07.10
스프링 Ioc/DI 컨테이너 사용 (xml 파일 이용)  (0) 2021.07.08
Servlet과 JSP연동  (0) 2021.07.01
JSP 란?  (0) 2021.07.01
Servlet 이란?  (0) 2021.07.01