서블릿이 실행된 후에는 다른 화면으로 이동한다.
ex) 글 등록, 글 수정, 글 삭제 등을 수행할 때 글 목록 화면으로 이동하게 된다. 그래야 글의 CRUD가 잘 됐는지 사용자가 확인할 수 있기 때문이다.
서블릿에서는 화면을 이동할 때 Redirect(리다이렉트)와 Forward(포워드) 두 가지 방법을 제공한다.
Redirect
리다이렉트는 현재 실행 중인 서블릿을 중지하고 브라우저로 응답을 보내라는 것을 의미한다.
이때 단순히 브라우저에게 응답을 보내는 것에 그치지 않고 브라우저로 하여금 리다이렉트를 지정한 경로를 다시 요청하도록 한다.
코드를 통해 알아보자

위 서블릿에서 사용자가 유저를 추가하기 위해
유저 추가(InsertUserServlet)을 요청(/insertUser.do)하면 insertUserServlet에서는 사용자 유저 추가 기능을 처리한 후에
로그인 화면(login.do)으로 리다이렉트 한다.
결국 리다이렉트는 두 번의 요청과 응답을 사용하기 때문에 실행 속도가 느리다.
하지만 최종적으로 요청된 리다이렉트 경로가 브라우저의 URL에 남기 때문에 어느 페이지에 대한 응답인지 확인할 수 있다.
Forward
포워드는 리다이렉트와 다르게 한 번의 요청과 응답으로 화면을 이동한다.
포워딩 방식은 서버 안에서 화면 이동이 이루어진다.
코드를 통해 비교해보자

사용자가 사용자 추가를 요청(/insertUser.do)을 하였을 때, 서버가 로그인 화면으로 포워딩(/login.do)하는 것이다.
포워딩은 서블릿 컨테이너 안에서 이동한 것이기 때문에 브라우저의 URL 검색창은 최초로 사용자 추가를 요청했던
/insertUser.do로 고정된다.
포워딩 방식은 리다이렉트 방식과 달리 요청 URL은 변경되지 않지만, 한 번의 요청과 응답으로 사용자 요청을 처리하기 때문에 실행 속도가 빠르며, 하나의 요청에 따른 request와 response를 공유한다.
결론
글쓰기, 글수정, 글삭제 , 회원가입과 같이 CREATE, UPDATE, DELETE(DB에 변화가 생기는 작업)를 수행할 땐
중복작업을 피하기 위해 Redirect를 사용하는 것이 좋고
글확인과 같이 READ(DB에 변화가 없는 작업)을 수행할 땐
URL을 숨길 수 있고 속도가 빠른 Forward를 사용하는 것이 좋다.
'WEB' 카테고리의 다른 글
| [WEB]MVC 패턴 (MVC Pattern) (0) | 2024.02.16 |
|---|---|
| [WEB]쿠키와 세션 (Cookie And Session) (0) | 2024.02.16 |
| 이클립스 톰캣 resource '/server' does not exist 에러 해결 방법 (0) | 2024.02.15 |
| [WEB]VO 패턴 (VO Pattern) (0) | 2024.02.14 |
| [WEB]DAO 패턴 (DAO Pattern) (0) | 2024.02.14 |