웹 페이지를 이용함에 있어서 요청에 대한 응답으로 페이지를 전환하는 방법에 대해서 알아보고자 한다. 이렇게 페이지를 전환하는 방법으로는 리다이렉트(Redirect)와 포워드(Forward)가 있는데 이 두 가지 페이지 전환의 설명과 차이를 알아보자
Forward(포워드)
포워드를 설명하기 앞서서 먼저 간단한 예시를 들어보면서 시작하자
1. 고객이 ARS 상담을 위해 1번 상담원한테 연결을 한다.
2. 1번 상담원은 2번 상담원의 도움을 받아 문제의 해결법을 알게 된다.
3. 1번 상담원이 2번 상담원으로부터 알게 된 해결법을 통해 고객에게 안내를 한다.
지금의 경우에는 1번 상담원한테 전화를 연결한 상태에서 1번 상담원가 옆에 있는 2번 상담원을 통해 문제를 해결하는 과정이다. 이 경우에 고객은 계속 1번 상담원과 연결되어 있고 해답 또한 1번 상담원을 통해 하게 된다.

이와 같이 클라이언트는 웹 페이지가 전환된 것을 모르는 것을 포워드(Forward)라고 한다. 포워드는 Web Container 안에서 페이지가 전환이 되고 클라이언트는 실제로 웹 페이지가 전환된 것을 알지 못한다. 또한 최초의 페이지와 포워딩된 페이지는 서로 같은 request 객체와 response 객체를 공유하며 클라이언트는 전환된 URL을 모른 채 최초의 URL만 알고 있는 상태가 유지된다.
이처럼 포워드는 전환될 URL로 Request 객체 정보를 그대로 전달하기 때문에 클라이언트가 최초로 전송한 요청 사항은 전환된 URL에서도 그대로 유효한다. 이럴 경우 게시판 글쓰기 혹은 회원등록을 할 때 새로고침을 하면 클라이언트가 요청한 요청 사항이 그대로 남아서 전달되기 때문에 동일한 정보로 중복 등록을 하게 된다. 이렇기 때문에 포워드는 시스템 변화가 발생하지 않는 단순 조회 기능(게시판 조회, 회원 조회 등등)에 사용되어야 한다.
Redirect(리다이렉트)
이번에도 포워드와 마찬가지로 리다이렉트를 설명하기 앞서서 간단한 예시를 먼저 들어보도록 하자
1. 고객이 ARS 상담을 위해 1번 상담사한테 연결을 한다.
2. 1번 상담원은 문제 해결을 위해 2번 상담원한테 연결을 해달라고 고객한테 요청을 한다.
3. 고객은 2번 상담원한테 연결을 해서 해결법을 안내받는다.
지금의 경우에는 1번 상담원한테 고객이 전화를 걸었지만 1번 상담원한테 2번 상담원한테 연결을 하라는 응답을 받고 2번 상담원한테 다시 연결을 해서 해답을 2번 상담원한테 얻게 되는 과정이다.

이와 같이 클라이언트가 URL2로 웹 페이지를 전환하라는 응답을 받고 페이지가 전환되는 것을 리다이렉트(Redirect)라고 한다. 리다이렉트는 Web Container로 명령이 들어오면 클라이언트에게 새로운 URL2로 전환하라는 응답을 내어주고 이 응답을 받은 클라이언트가 전달된 URL2로 전환되는 것을 리다이렉트라고 한다. 이렇게 리다이렉트로 페이지가 전환될 때는 최초로 요청을 한 Request객체, Response 객체와는 다른 새로운 Request 객체와 Response 객체를 새롭게 전환되는 URL2에 전달된다.
리다이렉트는 글을 작성할 때 새로고침을 하여도 최초 요청 사항은 존재하지 않고 전환되는 URL을 응답받기 때문에 포워드처럼 중복적으로 등록되지 않는다. 이렇기 때문에 리다이렉트는 시스템 변화가 발생하는 요청(글 작성, 회원 등록 등등)에 사용하기에 적절하다.
'Development > Web' 카테고리의 다른 글
| [Web]쓰레드와 멀티 쓰레드 (0) | 2023.04.22 |
|---|---|
| [Web]서블릿(Servlet)과 서블릿 컨테이너란? (0) | 2023.04.16 |
| [Web]Web Server와 Web Application Server (0) | 2023.04.16 |