웹은 현재 작업 중인 페이지에서 다른 페이지로 이동하기 위해 2가지 페이지 전환 기능을 제공한다.
Forward
Forward는 Web Container 차원에서 페이지의 이동만 존재한다. 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없다.
웹 브라우저에는 최초에 호출한 URL이 표시되고, 이동한 페이지의 URL 정보는 확인할 수 없다. 그리고 현재 실행 중인 페이지와 forward에 의해 호출될 페이지는 Request 객체와 Response 객체를 공유한다.
최초 요청을 받은 URL1에서 클라이언트에게 redirect 할 URL2 를 반환하고, 클라이언트에서는 새로운 요청을 생성하여 URL2에 대시 요청을 보낸다. 최초의 Request와 Response 객체는 유효하지 않고 새롭게 생성되는 것이다.
시스템에 변화가 생기는 수정, 삭제, 회원가입, 글쓰기 등에 적합하다.
예시)
- 고객이 고객센터로 123번으로 전화를 건다.
- 전화번호 123번에 할당된 상담원 1이 받는다.
- 고객의 요청사항을 이야기한다.
- 상담원1의 담당 업무가 아니라서 해당 업무 담당자인 상담원 2에게 고객 요청사항 메모지와 함께 전화를 돌린다.
- 고객의 요청사항(request) 재사용
- 고객은 다시 요청사항 이야기할 필요 없음
- 이동할 URL로 요청정보를 그대로 전달한다. 따라서 사용자가 최초로 요청한 정보는 다음 URL에서도 유효하다.
시스템에 변화가 생기지 않는 단순 조회, 검색, 로그인 요청의 경우 forward로 응답하는 것이 바람직하다.
Redirect
Web Container로 명령이 들어오면, 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내린다. 그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 해당 주소로 이동한다. 다른 웹 컨테이너에 있는 주소로 이동하며 새로운 페이지에서는 Request와 Response 객체가 새롭게 생성된다.
최초 요청을 받은 URL1에서 클라이언트에게 redirect 할 URL2를 반환하고, 클라이언트에서는 새로운 요청을 생성하여 URL2에 대시 요청을 보낸다. 최초의 Request와 Response 객체는 유효하지 않고 새롭게 생성되는 것이다.
시스템에 변화가 생기는 수정, 삭제, 회원가입, 글쓰기 등에 적합하다.
예시)
- 고객이 고객센터로 123번으로 전화를 건다.
- 전화번호 123번에 할당된 상담원 1이 받는다.
- 고객의 요청사항을 이야기한다.
- 상담원 1이 고객에게 해당 업무는 저희 관공서가 아닌 다른 곳으로 문의해야 한다고 말하며 다른 관공서의 문의 전화번호 789를 알려준다,
- 고객은 전화번호 789에 전화를 건다.
- 전화번호 789에 할당된 상담원 A가 받는다.
- 고객의 요청사항을 얘기한다.
- 고객의 요청사항(request) 재사용 불가
- 고객은 다시 요청 사항을 이야기해야 함
- 상담원 A는 고객의 요청사항을 처리해준다.
'Spring' 카테고리의 다른 글
[JSP] Cookie (0) | 2022.10.20 |
---|---|
[JSP] Session (0) | 2022.10.20 |
[JSP] Implicit Object, Directive, Action Tag (0) | 2022.10.20 |
[Web] Web Server 과 WAS (0) | 2022.10.20 |
[Web] 정적, 동적 웹페이지 (0) | 2022.10.20 |