웹에서 페이지를 이동할 때, 2가지 방법이 있습니다. 바로 Forward와 Redirect입니다.
결론을 먼저 보면 시스템에 따라 두 가지 방식을 적절히 사용하여야 합니다.
- 단순조회 요청(목록, 검색)의 경우 Forward방식으로 응답.
- DB, Session등에 변화가 생기는 요청( 회원가입, 글 작성)의 경우 Redirect방식으로 응답.
-> forward와 Redirect에 대해 알아보고, 위 두가지 방식을 나누는 이유에 대해서 알아보겠습니다.
* Forward 방식
- Forward는 Web Container에서 페이지의 이동만 존재하기 때문에, 클라이언트는 다른 페이지로 이동(요청)을 했는지 알 수가 없습니다.
- 브라우저에는 최초 요청한 URL만이 표시됩니다.
- 현재 실행중인 페이지와 Forward에 호출되는 페이지는 Request객체와 Response객체를 공유합니다.
* Redirect 방식
- Redirect는 해당 URL로 요청이 들어왔을때, 웹 브라우저에게 다른 URL로 이동하라는 명령을 보낼 수 있습니다.
- 해당 과정에서 클라이언트의 요청 URL이 바뀌고 새로운 Request객체와 Response객체를 생성합니다.
* 결론
- Forward는 이동 후에도 요청 정보가 남아 있으므로 만약 글쓰기 페이지에서 사용자가 새로고침을 누르게된다면, 게시글이 여러 개 등록되는 문제가 생길 수 있기 때문에 단순 조회 요청에서 Forward를 사용하여 응답해야 합니다.
- Redirect는 요청 처리후 다른 URL로 이동하여 새로운 요청을 생성해 보내므로 db, session에 변화가 생기는 요청에 Redirect방식으로 응답하는 것이 맞습니다.
'Web' 카테고리의 다른 글
[Web] GET & POST 요청 차이 (2) | 2020.11.30 |
---|