이번에는 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이 변경되지 않고 그대로이다. 이는 서블릿의 포워드가 서버에서 수행되었기 때문이다.

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

GET 방식으로 데이터를 전달합니다.
6. dispatch를 이용해 전달된 name 값을 출력한다.

다른 서블릿에서 전달된 데이터를 가져옵니다.
7. GET 방식으로 dispatch를 이용해 데이터를 전달해도 웹 브라우저의 URL은 변경되지 않는다.

'스프링 부트 > 자바 웹을 다루는 기술' 카테고리의 다른 글
| 8.5 ServletContext와 ServletConfig 사용법 (0) | 2024.01.21 |
|---|---|
| 8.4 바인딩 (1) | 2024.01.21 |
| 8.2 서블릿의 여러 가지 포워드 방법 (1) | 2024.01.20 |
| 8.1 서블릿 포워드 기능 사용하기 (0) | 2024.01.20 |
| 7.5 회원 정보 삭제하기 (1) | 2024.01.20 |