웹은 현재 페이지에서 다른 페이지로 페이지 전환을 하기 위해 2가지 기능을 제공한다.
웹 컨테이너(Web Container) 차원에서 페이지 이동만 있는 것이다. 실제로 웹 브라우저는 다른 페이지로 이동을 했는지 알 수 없다. 그렇기 때문에 웹 브라우저에는 최초에 호출한 URL이 표시되며 이동한 페이지의 URL 정보는 볼 수 없다.
포워딩은 클라이언트와 통신없이 서버에서만 처리되는 것이기 때문에 리다이렉트보다 나은 성능을 보여준다.
그리고 현재 실행중인 페이지와 Forwarding에 의해 호출될 페이지는 Request와 Response 객체를 공유한다. 객체를 요청에 담고 해당 요청을 사용할 다음 자원에 전송한다는 뜻이다.
간단히 말하여 말 그대로 Forward(건내주기)한다는 것이다. 따라서 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효한 것이다.
Forward 방식은 시스템에 변화가 생기지 않는 단순조회나 검색의 경우 이용한다.
Redirect는 Web Container로 명령이 들어오면, 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내린다. 그러면 웹 브라우저는 URL을 바꾸고 해당 주소로 이동한다. 다른 웹 컨테이너에 있는 주소로 이동하며 새로운 페이지에서는 Request와 Response객체가 새롭게 생성됩니다.
Redirect의 경우 최초 요청을 받은 URL1에서 클라이언트에게 redirect할 URL2를 반환하고, 클라이언트에서는 새로운 요청을 생성하여 URL2에 다시 요청을 보낸다. 그러므로 처음 보냈던 최초의 Request와 Response 객체는 유효하지 않고 새롭게 생성된다.
Redirect 방식은 시스템에 변화가 생기는 로그인, 회원가입, 글쓰기 등에 이용한다.
Redirect와 Forward의 차이
https://doublesprogramming.tistory.com/63
Redirect와 Forward의 차이
https://mangkyu.tistory.com/51