[Web] Redirect


  • 리다이렉트 (redirect)
  http 프로토콜로 정해진 규칙이다. 서버는 클라이언트로부터 요청을 받은 후, 클라이언트에게 특정 url 로 이동하라고 요청할 수 있고 이를 리다이렉트라고 한다. 서버에서는 클라이언트에게 응답으로 상태코드 302와 함께 이동할 url 정보를 Location Header에 담아 전송한다. 클라이언트는 서버로 부터 받은 상태값이 302이면 Location Header 값으로 재요청을 보내게 된다. 이때 브라우저의 주소창은 전송받은 url로 바뀌게 된다. 

  서블릿이나 jsp는 redirect하기 위해 HttpServletResponse가 가지고 있는 sendRedirect() 메소드를 이용한다. 

예제 : redirect01.jsp 파일에서 redirect02.jsp 파일로 리다이렉트를 구현한다

[redirect01.jsp]


1
2
3
4
<%
    response.sendRedirect("redirect02.jsp");
 
%>
cs


[redirect02.jsp]


1
2
3
<body>
    redirect된 페이지 입니다
</body>
cs


redirect01.jsp를 실행하고 크롬 개발자 도구(F12)의 네트워크 탭을 확인해보면 status code 302가 보내지면서 redirect02.jsp 파일로 리다이렉트 된 것을 확인 할 수 있다.



꼭 기억해야 할 부분은 redirect는 클라이언트가 요청을 2번 보내게 된 다는 것이다. 항상 요청을 할 때는 요청 객체와 응답객체가 생성되는데 두번의 요청에서 사용되는 요청/응답 객체가 서로 다르기 때문이다. 





No comments:

Powered by Blogger.