client.html -> Servlet1 -> forward -> Servlet2
client.html -> Servlet1 -> redirect -> client.html -> Servlet2
- 다른 경로로 이동하는 방식 중 하나이다.
- 다른 경로로 직접 요청 파라미터를 이동시킨다.
- 경로를 작성할 때 URLMapping만 작성한다. (ContextPath는 작성하지 않는다.)
(데이터를 전달시켜주는 역할을 수행)
RequestDispatcher dispatcher = request.getRequestDispatcher("/forward2");
dispatcher.forward(request, response);
/servlet ┌----------------------------------┐ NewFile.html -> | Forward1.java -> Forward2.java | | /forward1 /forward2 | └----------------------------------┘ NewFile.html -> Forward1.java <a href="/servlet/forward1"> Forward1.java -> Forward2.java request.getRequestDispatcher("/forward2")
- 클라이언트 측에서는 최초 경로만 확인 된다.
(이동하는 경로의 주소는 보이지 않음)
아래 사진은 forward1에서 forward2로 이동한 상태이다.
- 다른 경로로 이동하는 방식 중 하나이다.
- 서버가 다른 경로를 응답하면 클라이언트가 해당 경로로 직접 이동하는 방식이다.
- 경로를 작성할 때 ContextPath와 URLMapping을 모두 작성한다.
String name = request.getParameter("name");
- 한글 요청이 온 경로를 응답할 때 인코딩
‣ 첫번째 요청과 두번째 요청의 형식을 동일하게 맞춤response.sendRedirect("/servlet/redirect2?name=" + URLEncoder.encode(name, "UTF-8"));
/servlet ┌----------------┐ NewFile.html -> | Redirect1.java | | /request1 | └----------------┘ /servlet ┌----------------┐ NewFile.html -> | Redirect2.java | | /request2 | └----------------┘ NewFile.html -> Redirect1.java <a href="/servlet/request1"> Redirect1.java -> NewFile.html response.sendRedirect("/servlet/redirect2") NewFile.html -> Redirect2.java get 방식으로 "/servlet/redirect2"로 이동
- webapp - WEB-INF - lib 에
jar
파일을 copy한다.
👉Redirect1 깃허브(클릭)
👉Redirect2 깃허브(클릭)
👉Redirect html 깃허브(클릭)
잘봤어요~^3^ 가브리엘라님 같이 소통해요!