profile image

L o a d i n g . . .

article thumbnail image
Published 2024. 9. 28. 22:52

Forward, Redirect 란?

JSP 환경에서 현재 작업중인 페이지에서 다른 페이지로 이동하는 두 가지 방식의 페이지 전환 기능

예시를 들기 위해 아래와 같은 상황이라고 한다.

  • 고객: 클라이언트
  • 123: URL
  • 상담원: 서버

Forward

클라이언트가 서버에게 어떤 요청을 보냈을 때, 서버가 요청을 받아 다른 서버에게 넘겨주는 것

서버는 요청을 내부적으로 옮기기 때문에 새로운 요청을 보내는 것이 아니므로, request, reponse 객체는 그대로 유지 

  1. 고객이 고객센터로 상담원에게 123번으로 전화를 건다.
  2. 상담원은 해당 문의사항에 대해 잘 알지 못해서 옆의 다른 상담원에게 해당 문의사항에 답을 얻는다.
  3. 상담원은 고객의 문의사항을 처리한다

https://doublesprogramming.tistory.com/63

 

  • web container 차원에서의 페이지 이동, 실제로 웹 브라우저는 다른 페이지로 이동했는지 알 수 없다. (고객은 사앋ㅁ원이 누구에게 물어봤는지 알 수 없다)
  • 웹 브라우저에는 최초 호출한 URL만 표시되고, 이동한 페이지의 URL 정보는 볼 수 없다. (고객은 123번으로만 전화했기 때문에 알 수 없다)
  • 동일한 web container 에 있는 페이지로만 이동이 가능하다.
  • 현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request, response 객체를 공유한다. (고객이 요청한 문의사항은 고객이 전화를 끊을 때까지 유효하다)
forward 방식은 다음 이동한 URL로 요청정보를 그대로 전달한다.
말 그대로 forward (건네주기) 하는 것
그렇기 때문에 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효하다.

Redirect

서버가 클라이언트로부터 요청을 받은 후, 클라이언트에게 특정 URL로 이동하라고 요청하는 것

re(다시) + direct(지시하다) -> 다시 지시하다

 

  1. 고객이 고객센터로 상담원에게 123번으로 전화를 건다.
  2. 상담원은 "고객님 해당 문의사항은 124번으로 다시 문의해주세요" 라고 고객에게 말한다.
  3. 고객은 다시 124번으로 문의해서 일을 처리한다.

https://doublesprogramming.tistory.com/63

 

  • web container는 redirect 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라는 명령을 내린다. (고개은 전화를 끊고 124번으로 다시 전화를 건다)
  • 웹 브라우저는 URL로 지시된 주소로 바꾸고 그 주소로 이동한다.
  • 다른 web container에 있는 주소로 이동이 가능하다 (123 -> 124)
  • 새로운 페이지에서는 request, response 객체가 새롭게 생성된다. (123번에서 고객이 요청했던 문의사항은 사라지고, 124번으로 다시 걸어서 요청한 문의사항을 다시 말해야한다.

정리

1. URL의 변화 여부

  • 변화 O -> redirect
  • 변화 X -> forward

 

2. 객체의 재사용 여부

  • 재사용 O -> forward
  • 재사용 X -> redirect

출처

1. https://doublesprogramming.tistory.com/63

2. https://9keyyyy.tistory.com/15

복사했습니다!