-
Redirect VS Forward의 차이
포워딩(Forwarding)과 리다이렉트(Redirect)는 JSP 환경에서 페이지에서 다른 페이지로 이동하는 페이지 전환 기능들이다.Redirect
Redirect : 사전적 의미 : 우편물이나 문서 등을 다른 주소나 방향으로 연결해 보내는것- re(다시) + direct(지시하다, 보내다)
- 클라이언트는 서버로 부터 받은 응답 값이 상태코드 302라는 것을 보고 서버가 리다이렉트를 시킨거라는걸 알 수 있다.
- 여기서 보통 클라이언트는 웹 브라우저라고 생각하면 된다.
- 여기서 보통 클라이언트는 웹 브라우저라고 생각하면 된다.
- 웹 브라우저가 302 코드를 보고 리다이렉트 해야하는 url로 브라우저가 직접 다시 요청을 보낸다.
- 즉 클라이언트 입장에서 서버의 특정 URL로 요청을 보냈을때 다른 URL을 가라고 알려주는것.
- 즉 클라이언트 입장에서 서버의 특정 URL로 요청을 보냈을때 다른 URL을 가라고 알려주는것.
- redirect(리다이렉트)는 페이지 전환 주체가 클라이언트이다.
- 새로운 페이지가 나온다고 생각하면 된다.
- 또한, 리다이렉트 정보를 받기 전, 처음 보냈던 요청과는 별개의 요청이므로 새로운 request, response가 생성된다.
- 처음 했던 요청과는 별개의 요청이다. 즉 새로운 request, response 객체가 생성되는것이다.
- 또한, url 주소가 달라진다. (302 코드와 함께 새로 전환할 url을 넘겨주므로)
- 리다이렉트는 클라이언트의 요청에 의해 DB에 변화가 생기는 작업에 주로 사용한다.
Forward
Forward : 사전적 의미 : 앞으로, 건네주다 서버에서 포워딩된 url의 리소스를 확인하여 클라이언트에 응답한다.- URL도 바뀌며, Response Code도 2xx로 정상 요청에 대한 응답으로 나오게 된다.
- (400, 500 등 다른 에러가 나지 않았을 경우에.).
- 클라이언트는 다른 페이지로 이동을 했는지 알 수 없다.
- 클라이언트가 url에 대한 요청이 들어오면, 해당 url이 다른 url로 건네주는 행위를 포워딩이라고 하고,
- HTTP로 요청을 받은 서버는 HTTP 응답 상태코드로 302를 보내고, 응답 메시지 헤더 중 Location 값으로 리다이렉트 되어야 할 주소를 설정해 리턴한다.
- 서버는 Http(응답코드 : 302) 응답 메시지를 통해 www.naver.com/post/ekfmsrht 라는 다른 url로 다시 요청하라고
- 이 두가지의 차이점은 페이지 이동이 어떻게 이루어지는가에 있다.
- 동일한 웹 컨테이너에 있는 페이지로만 이동 할 수 있다.
- 포워딩은 클라이언트와 통신없이 서버에서만 처리되는 것이기 때문에 리다이렉트보다 나은 성능을 보여준다.
- 현재 실행중인 페이지와 Forwarding에 의해 호출될 페이지는 Request와 Response 객체를 공유한다.
- 객체를 요청에 담고 해당 요청을 사용할 다음 자원에 전송한다는 뜻이다.
- 포워딩이 일어나면 클라이언트 단에서는 아무런 동작을 하지 않으며, 모든 동작을 서버에서 처리한다.
- 그래서 사용자가 최초로 요청한 URL 및 요청정보는 바뀌지 않는다.
- 다음 url 에서도 유효한것이다.
- 포워딩은 특정 url에 대해 외부에 공개되지 말아야 하는 부분을 가리는데 사용된다.
- 시스템이나 DB에 변화가 생기지 않는 단순 조회, 검색 등에 사용한다.
그렇다면 forward와 Redirect의 차이점은?
포워드와 리다이렉트는 비슷하지만 다르다.
1. 리다이렉트는 url 주소가 달라지고, 포워드는 url 주소가 달라지지 않는다
- 리다이렉트는 클라이언트가 서버에게 요청을 보내면 서버는 어떠한 일을 처리하고 클라이언트에게 새롭게 요청할 곳을 알려준다.
- 리다이렉트의 결과 url 주소가 달라진다.
- 포워드는 클라이언트가 요청을 보냈을 때 또 다른 서버에게 일을 넘긴다(forward).
- 포워드의 경우 클라이언트는 서버에서 서블릿이 혼자 일을 처리했는지, 다른 서블릿에게 일을 위임했는지 알 필요가 없다.
- 포워드가 실행되면 url주소는 바뀌지 않는다.
2. 리다이렉트는 request, response 객체가 여러 번 생성되고, 포워드는 한 번만 생성되어 재사용(공유)할 수 있다.
- 참조
- https://kbj96.tistory.com/39
- https://bellog.tistory.com/80
- https://sdevstudy.tistory.com/26
- 부스트코스 강좌
- 이해되지 않으신다면 들어가서 보시면 됩니다