[JSP] Servlet (Forward / Redirect)

Gabriela·2023년 9월 14일
0

JSP

목록 보기
5/20

forward 흐름

  • (서버 기준) 데이터 전달
client.html -> Servlet1 -> forward -> Servlet2

redirect 흐름

  • (서버 기준) 데이터 이동(방향을 다시 잡아줌)
client.html -> Servlet1 -> redirect -> 
client.html -> Servlet2

Forward


  • 다른 경로로 이동하는 방식 중 하나이다.
  • 다른 경로로 직접 요청 파라미터를 이동시킨다.
  • 경로를 작성할 때 URLMapping만 작성한다. (ContextPath는 작성하지 않는다.)
    (데이터를 전달시켜주는 역할을 수행)

요청의 전달 객체 생성

RequestDispatcher dispatcher = request.getRequestDispatcher("/forward2");

전달 (요청과 응답을 모두 전달함)

dispatcher.forward(request, response);

forward 특징

                      /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로 이동한 상태이다.


Redirect


  • 다른 경로로 이동하는 방식 중 하나이다.
  • 서버가 다른 경로를 응답하면 클라이언트가 해당 경로로 직접 이동하는 방식이다.
  • 경로를 작성할 때 ContextPath와 URLMapping을 모두 작성한다.

요청 파라미터

String name = request.getParameter("name");

redirect할 경로를 응답함

  • 한글 요청이 온 경로를 응답할 때 인코딩
    ‣ 첫번째 요청과 두번째 요청의 형식을 동일하게 맞춤
response.sendRedirect("/servlet/redirect2?name=" + URLEncoder.encode(name, "UTF-8"));

redirect 특징

                      /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한다.

‣ 활용 예제

👉Forward1 깃허브(클릭)
👉Forward2 깃허브(클릭)
👉Forward html 깃허브(클릭)

👉Redirect1 깃허브(클릭)
👉Redirect2 깃허브(클릭)
👉Redirect html 깃허브(클릭)



profile
개발이 세상에서 제일 재밌어요

1개의 댓글

comment-user-thumbnail
2023년 12월 7일

잘봤어요~^3^ 가브리엘라님 같이 소통해요!

답글 달기