forward
출처) http://java.scwcd.jobs4times.com/Web-Container-Model.html
WAS의 서블릿이나 JSP가 요청을 받은 후 그 요청을 처리하다가, 추가적인 처리를 같은 웹 어플리케이션안에 포함된 다른 서블릿이나 JSP에게 위임하는 경우, 이를 포워드(forward)라고 한다
- request, response 객체가 한 번 생성된다, 요청과 응답이 하나다
- url이 변경되지 않는다
foward 진행순서
- 웹 브라우저에서 Servlet1에게 요청을 보냄
- Servlet1은 요청을 처리한 후, 그 결과를 HttpServletRequest에 저장
- Servlet1에서 처리한 결과가 있다면, 이는 지역변수로 처리되었을 것이므로, request 객체를 이용해 값을 저장하고 Servlet2에 전달해야 한다
- Servlet1은 결과가 저장된 HttpServletRequest와 응답을 위한 HttpServletResponse를 같은 웹 어플리케이션 안에 있는 Servlet2에게 전송(forward)
- 인자로 request, response를 전달한다
- Servlet2는 Servlet1으로 부터 받은 HttpServletRequest와 HttpServletResponse를 이용하여 요청을 처리한 후 웹 브라우저에게 결과를 전송
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
- 출처) 부스트코스 풀스택 강의 https://www.boostcourse.org/web316/lecture/16705?isDesc=false
'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 |