포워드란 최전방 공격수를 말한다. 현재 이피엘을 부수고 있는 우리의 홀붕이. 볼 때마다 잘생겼다.
forward 방식의 특징 중 하나는 request와 response가 유지된다는 점이 아닐까싶다. servletContext를 이용해 공유된 데이터나 request, response를 유지할 수 있는 것이다! forward는 WAS내에서 페이지를 전달하는 방식이다. 서버 내부에서 직접 처리되기 때문에 클라이언트에게는 전체적인 이동이 눈에 보이지 않는다.(URL 상의 변경이 없음) 클라이언트가 재동작 즉, 재요청(새로고침)을 할 경우 request와 response가 유지되므로 기존 동작이 반복된다. 그래서 주로 정보 조회(select)시에 이용된다. 사용할 땐 보통 RequestDispatcher를 사용하여 forward 작업을 수행한다.
✔ forward를 사용할 때 주의할 점이 있는데, 데이터가 다시 저장될 수 있는 상황이나 조회수가 오를 수 있는 게시물 등에서 사용할 경우 새로고침만으로 조회수가 증가하고, 데이터 저장이 가능한 곳에선 계속해서 저장을 시도하기 때문에 forward가 아닌 Redirect를 선택해야한다🤐
리다이렉트에 대한 좋은 사진을 구하지 못했다..
Redirect는 "다시 보내다" 라는 뜻을 가지고 있다.
redirect는 forward와는 다르게 요청을 받고 응답시 클라이언트에게 이동할 url을 지정하여 클라이언트가 이동하게 하는 방식이다. 그렇기 때문에 요청을 한 클라이언트는 서버로부터 url를 받게 되고, 받은 새로운 url로 요청을 보낸다. 이 때 클라이언트는 처음 요청한 페이지와 다른 페이지로 이동하는 것을 인식하며, 주소창에는 새로운 URL이 표시된다. servletContext 덕분에 request, response를 유지하지만, redirect는 request 와 response를 유지 하지 않는다. HttpServletResponse의 sendRedirect()메서드를 이용해 redirect 작업을 수행한다.
리다이렉션 후에는 클라이언트와 서버 간에 새로운 요청과 응답이 이루어지므로, 공유된 데이터나 상태를 유지하기 위해서는 쿠키, 세션, URL 매개변수 등을 활용해야한다.
😛 redirect는 재요청시(새로고침) 기존 동작이 반복되지 않는다. 그래서
서버 상태변경( insert , delete , update 를 통한 데이터 변경 )에 적합하다.