티스토리 뷰

프로그래밍/Web

Redirect & Forward

국윤창 2018. 7. 11. 11:53

Redirect

요청받은 Servlet이 redirect를 한다면 헤더에 결과값으로 30x를 보내고 redirect할 URL을 같이 보낸다. 그러면 Client는 결과값이 30x임을 확인하고 Server에 해당 URL로 요청을 다시 보내게 된다. 보통 302가 결과값으로 들어가는데 자세한 것은 아래 참고 링크를 확인하자.

[그림 1] HTTP Redirect


요청이 두 번이므로 Request와 Response 객체가 2번 만들어지게 된다. 그리고 요청을 다시 보내는 것이기 때문에, 결과 주소가 달라지게 된다.


Forward

Redirect와 달리 응답은 한 번이고, 서버 내부에서 역할을 위임한다. 따라서 Request, Response 객체를 같은 것을 사용하며, Forward를 한 Servlet1의 Request, Response 객체가 Forward를 받은 Servlet2에게 전달된다. 따라서 Servlet2는 Servlet1의 response 객체를 이용하여 결과를 반환한다.

[그림 2] HTTP Forward


Request 객체에 값을 넣고, Request, Response 객체를 넘기는 것은 아래 코드처럼 사용할 수 있다.

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	int randValue = (int)(Math.random() * 6) + 1;
		
	request.setAttribute("randValue", randValue);
		
	RequestDispatcher requestDispatcher = request.getRequestDispatcher("/next");
	requestDispatcher.forward(request, response);
}

RequestDispatcher 객체에 forward할 URL을 넣고 request와 response 객체를 넣는다. 또한 request에 attribute로 전달할 값을 넣는 것을 볼 수 있다.



참고

https://developer.mozilla.org/ko/docs/Web/HTTP/Redirections#attr1


https://nesoy.github.io/articles/2018-04/Redirect-Forward

'프로그래밍 > Web' 카테고리의 다른 글

Scope  (0) 2018.07.11
Eclipse 웹 프로젝트 설정  (0) 2018.07.11
Javascript 비동기 호출  (0) 2018.07.11
Servlet  (0) 2018.07.11
Web Server와 Web Application Server 차이  (0) 2018.07.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함