활동/호기심

Java에서 페이지 이동시 Redirect와 Forward 차이가 뭔데

ByeongJun 2023. 9. 20. 14:49
반응형

 

Java 웹 애플리케이션에서 페이지 이동에는

'Redirect' 'Forward'라는 두 가지 방법이 있는데 

 

이 두 방법은 서로 다른 동작을 한다. 

 

 

 

 a.jsp 로 클라이언트가 요청을 보내면  a.jsp 는 로직에 맞게 작업할 것이다. 

 

그 다음 response.sendRedirect("b.jsp");로 이동을 하라고 명령을 내리면 

서버가 브라우저한테  b.jsp 로 이동하라는 응답을 보낸다. 

 

응답을 받은 클라이언트는 다시 한번  b.jsp  요청을 다시 보내는데 

마찬가지로 로직에 맞게 작업 후 다시 응답을 클라이언트에게 보낸다.

 

네트워크 상의 두 번의 요청과 응답이 발생하는 것을 알 수 있다. 

즉,  a.jsp 에서 담은 값을  b.jsp 로 전달할 수 없다. 

 

HTTP 프로토콜이 상태를 공유할 수 없기 때문에 발생한다.

 

 

 

 

 

a의 결과값을 b로 전달하고 싶다면 지금부터 설명할 

Forward 방식을 사용하면 된다.

RequestDispatcher를 이용할 경우 한번의 요청으로 인해 

모든 작업이 서버에서 처리되기 때문에 

 

실행 속도는 Response의 sendRedirect를 사용할 때보다 빠르다. 

(Response의 sendRedirect를 이용할 경우에는 String 밖에 전달할 수 없다.) 

 

- 굳이 데이터를 전달할 필요가 없는 경우 Redirect 방식을 사용해 페이지를 이동해도 무방하다.
- 서블릿 간의 데이터를 전달하고 싶을 땐 네트워크상에서 데이터를 유실 우려가 있기 때문에
반드시 Forward를 사용해야한다.
반응형