🎃 redirect
클라이언트에게 이동할 주소를 보내주고, 클라이언트가 새로 요청하게 한다.
response.sendRedirect(String loaction)
- 클라이언트가 새로운 요청을 보내기 때문에, 현재 서버가 아닌 다른 주소로 이동이 가능하다.
- 클라이언트가 직접 요청을 보내기 때문에, 브라우저 주소창의 주소가 변경된다.
- 새로 연결할 전화번호만 알려주고 현재 통화를 끊는 방식
- request, response는 새롭게 만들어진다.
- 네이버 및 다른 사이트로 이동이 가능하다.
🎃 forward
클라이언트에게 요청한 내용을 다른 주소로 넘겨서 응답을 보내도록 한다.
request.getRequestDispatcher(String url).forward(request, response)
- 서버 내부에서 임의로 응답할 주소를 고르기 때문에, 다른 서버로는 넘길 수 없다.
- 클라이언트는 관여하지 않고 서버에서 응답을 바꿔치기하므로 브라우저 주소창이 변경되지 않는다.
- 고객에게 잠시 기다리게 하고, 내선번호로 전화를 돌리는 방식
- request, response가 유지된다.
(A에서 setAttribute하면 B에서 getAttribute 할 수 있다)
- 서버 내부의 내용만 접근할 수 있고 다른 서버로는 갈 수 없다.
즉, 네이버 및 다른 사이트로 이동 불가
- request, response를 그대로 이용하고 싶을 때, 또는 바뀐 주소를 노출시키고싶지 않을 때 포워드를 사용한다.
🔥 한줄평
redirect와 forward의 차이점은 알고있었지만 굳이 forward를 사용하는 이유를 잘 몰랐었다. request, response를 그대로 사용하고 싶거나 주소를 노출시키지않고 이동시킬때 사용한다는 점을 알게 되었다!