Forward, Redirect 란?
JSP 환경에서 현재 작업중인 페이지에서 다른 페이지로 이동하는 두 가지 방식의 페이지 전환 기능
예시를 들기 위해 아래와 같은 상황이라고 한다.
- 고객: 클라이언트
- 123: URL
- 상담원: 서버
Forward
클라이언트가 서버에게 어떤 요청을 보냈을 때, 서버가 요청을 받아 다른 서버에게 넘겨주는 것
서버는 요청을 내부적으로 옮기기 때문에 새로운 요청을 보내는 것이 아니므로, request, reponse 객체는 그대로 유지
- 고객이 고객센터로 상담원에게 123번으로 전화를 건다.
- 상담원은 해당 문의사항에 대해 잘 알지 못해서 옆의 다른 상담원에게 해당 문의사항에 답을 얻는다.
- 상담원은 고객의 문의사항을 처리한다
- web container 차원에서의 페이지 이동, 실제로 웹 브라우저는 다른 페이지로 이동했는지 알 수 없다. (고객은 사앋ㅁ원이 누구에게 물어봤는지 알 수 없다)
- 웹 브라우저에는 최초 호출한 URL만 표시되고, 이동한 페이지의 URL 정보는 볼 수 없다. (고객은 123번으로만 전화했기 때문에 알 수 없다)
- 동일한 web container 에 있는 페이지로만 이동이 가능하다.
- 현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request, response 객체를 공유한다. (고객이 요청한 문의사항은 고객이 전화를 끊을 때까지 유효하다)
forward 방식은 다음 이동한 URL로 요청정보를 그대로 전달한다.
말 그대로 forward (건네주기) 하는 것
그렇기 때문에 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효하다.
Redirect
서버가 클라이언트로부터 요청을 받은 후, 클라이언트에게 특정 URL로 이동하라고 요청하는 것
re(다시) + direct(지시하다) -> 다시 지시하다
- 고객이 고객센터로 상담원에게 123번으로 전화를 건다.
- 상담원은 "고객님 해당 문의사항은 124번으로 다시 문의해주세요" 라고 고객에게 말한다.
- 고객은 다시 124번으로 문의해서 일을 처리한다.
- web container는 redirect 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라는 명령을 내린다. (고개은 전화를 끊고 124번으로 다시 전화를 건다)
- 웹 브라우저는 URL로 지시된 주소로 바꾸고 그 주소로 이동한다.
- 다른 web container에 있는 주소로 이동이 가능하다 (123 -> 124)
- 새로운 페이지에서는 request, response 객체가 새롭게 생성된다. (123번에서 고객이 요청했던 문의사항은 사라지고, 124번으로 다시 걸어서 요청한 문의사항을 다시 말해야한다.
정리
1. URL의 변화 여부
- 변화 O -> redirect
- 변화 X -> forward
2. 객체의 재사용 여부
- 재사용 O -> forward
- 재사용 X -> redirect
출처
'TIL > Java' 카테고리의 다른 글
[TIL/Java] 객체 동등 비교 equals() (0) | 2024.08.21 |
---|---|
[TIL/Java] 다형성, 필드 다형성, 추상 클래스 (abstract) (0) | 2024.08.19 |
[TIL/Java] 학생 수 입력받고 점수 등록하기 (if-else을 switch문으로 리팩토링) (0) | 2024.08.13 |
[TIL/Java] 배열 항목에서 최대값 출력하기 (for문 이용) (0) | 2024.08.12 |
[TIL/Java] 컴파일러란? (0) | 2024.08.07 |