HttpServletResponse 의 sendRedirect 메서드
Java Servlet 에서 페이지 이동을 위해 redirect 하는 메서드이다.
Http 프로토콜을 사용하여 정해진 규칙으로 서버가 클라이언트에게 특정 URL 로 이동하라고 요청을 보낸다.
sendRedirect 메서드를 사용하게 되면 서버에서는 클라이언트에게 응답 상태값을 302 와 함께 이동할
URL 정보를 Location 헤더값에 담아 전송한다.
클라이언트 브라우저는 서버로부터 받은 상태값이 302 일 경우 Location 헤더 값으로 재요청을 보내어
Redirect 하게 된다.
예시)
개발환경 : Spring Boot, JSP
위처럼 jsp 페이지가 2개가 존재한다.
test.jsp
response.sendRedirect 를 통해 "/test2" 페이지로 Redirect 한다.
test2.jsp
"/test" URL 로 이동 시 jsp 페이지 내의 자바코드 response.sendRedirect("/test2") 로 인해
서버에서는 Location 값과 상태 값을 302 로 변경하여 응답한다.
응답받은 클라이언트 브라우저는 Location 헤더 값으로 Redirect 재요청 한다.
RequestDispatcher 의 forward 메서드
클라이언트로부터 요청을 받고 이를 다른 리소스(서블릿, JSP, HTML)로 전달하는 메서드이다.
sendRedirect 는 HttpServletResponse 객체를 새로 생성하여 Redirect 시키지만
RequestDispatcher 의 forward 는 다른 리소스(서블릿, JSP, HTML)로 전달할 때
사용자 요청에 생성된 request, response 객체를 새로 생성하지 않고 그대로 전달한다.
예시)
위와 같이 RequestDispatcher 에 "/test2" 요청에 대한 정보를 넣고 forward 를 하게 되면
정상적인 "/test" 요청이지만 View 에 대한 정보는 "/test2" 인 걸 확인할 수 있다.