본문 바로가기
스프링 부트/자바 웹을 다루는 기술

8.3 dispatch를 이용한 포워드 방법

by 989898 2024. 1. 21.

이번에는 dispatch를 이용해 포워드하는 방법을 알아보겠다.

 

8.3.1 dispatch를 이용한 포워딩 과정

 

disapatch를 이용한 포워딩 과정이 redirect 방법과 다른 점은 클라이언트의 웹 브라우저를 거치지 않고 바로 서버에서 포워딩이 진행된다는 것입니다. 따라서 웹 브라우저 주소창의 URL이 변경되지 않는다. 즉, 클라이언트 측에서는 포워드가 진행되었는지 알 수 없다.

 

 클라이언트의 웹 브라우저에서 첫 번째 서블릿에 요청한다.

 첫 번째 서블릿은 RequestDispatcher를 이용해 두 번째 서블릿으로 포워드한다.

8.3.2 서블릿을 이용한 dispatch 포워딩 실습

 

이번에는 dispatch 방법으로 포워딩 기능을 구현해 보겠다.

 

1. sec03.ex01 패키지에 다음과 같이 두 개의 서블릿 클래스를 추가한다.

2. FirstServlet 클래스를 다음과 같이 작성한다. RequstDispatcher 클래스를 이용해 두 번째 서블릿인 second를 지정한 후 forward() 메서드를 이용해 포워드한다.

dispatch 방법을 이용해 second로 전달한다.

 

3. 두 번째 서블릿인 SecondServlet 클래스를 다음과 같이 작성한다.

4. 실행해 보면 웹 브라우저 주소 창의 URL이 변경되지 않고 그대로이다. 이는 서블릿의 포워드가 서버에서 수행되었기 때문이다.

매핑 이름을 first5로 요청한 결과

 

5. 이번에는 dispatch를 이용해 전송할 때 GET 방식으로 데이터를 전송해 보자. 앞의 서블릿 클래스를 다음과 같이 수정. 서블릿 이름 다음에 ?name=lee를 추가하여 GET 방식으로 name 값을 두 번째 서블릿으로 전달한다.

 

GET 방식으로 데이터를 전달합니다.

 

6. dispatch를 이용해 전달된 name 값을 출력한다.

 

다른 서블릿에서 전달된 데이터를 가져옵니다.

 

7. GET 방식으로 dispatch를 이용해 데이터를 전달해도 웹 브라우저의 URL은 변경되지 않는다.

그림 8-14  매핑 이름 first로 요청한 결과