서블릿에서 사용되는 포워드 방법에는 다음 네 가지가 있다.
• redirect 방법
• HttpServletResponse 객체의 sendRedirect() 메서드를 이용합니다.
• 웹 브라우저에 재요청하는 방식입니다.
• 형식: sendRedirect("포워드할 서블릿 또는 JSP");
• Refresh 방법
• HttpServletResponse 객체의 addHeader() 메서드를 이용합니다.
• 웹 브라우저에 재요청하는 방식입니다.
• 형식: response.addHeader("Refresh",경과시간(초);url=요청할 서블릿 또는 JSP");
• location 방법
• 자바스크립트 location 객체의 href 속성을 이용합니다.
• 자바스크립트에서 재요청하는 방식입니다.
• 형식. location.href='요청할 서블릿 또는 JSP';
• dispatch 방법
• 일반적으로 포워딩 기능을 지칭합니다.
• 서블릿이 직접 요청하는 방법입니다.
• RequestDispatcher 클래스의 forward() 메서드를 이용합니다.
• 형식: RequestDispatcher dis= request.getRequestDispatcher("포워드할 서블릿 또는 JSP"); dis.forward(request,response);
redirect, refresh, location 방법은 서블릿이 웹 브라우저를 거쳐 다른 서블릿이나 JSP에게 요청하는 방법이다. 반면에 dispatch 방법은 서블릿에서 클라이언트를 거치지 않고 바로 다른 서블릿에게 요청하는 방법이다. 네 가지 모두 자주 사용하므로 각각의 사용법과 차이점을 익혀두는 것이 좋다.
8.2.1 redirect를 이용한 포워딩
redirect 방법은 서블릿의 요청이 클라이언트의 웹 브라우저를 다시 거쳐 요청되는 방식이다.

➊ 클라이언트의 웹 브라우저에서 첫 번째 서블릿에 요청합니다.
➋ 첫 번째 서블릿은 sendRedirect() 메서드를 이용해 두 번째 서블릿을 웹 브라우저를 통해서 요청합니다.
➌ 웹 브라우저는 sendRedirect() 메서드가 지정한 두 번째 서블릿을 다시 요청합니다.
8.2.2 redirect를 이용한 포워딩 실습
1. 새 프로젝트 pro08을 만들고 sec01.ex01 패키지를 추가합니다. FirstServlet 클래스와 SecondServlet 클래스를 추가한다.

2. FirstServlet 클래스를 다음과 같이 작성합니다. redirect 기능을 구현한 서블릿이다.

➊ url 매핑
➋ sendRedirect( ) 메서드를 이용해 웹 브라우저에게 다른 서블릿인 second로 재요청합니다.
3. SecondServlet 클래스는 첫 번째 서블릿에서 요청을 받아 실행하는 두 번째 서블릿이다.

4. http://localhost:8090/first로 요청.

5. 최종적으로 웹 브라우저에 표시되는 매핑 이름은 /second이다. 즉, /first로 요청하면 sendRedirect()를 호출해 웹 브라우저에게 다시 /second를 요청하는 것이다.

8.2.3 refresh를 이용한 포워딩
refresh를 이용한 포워딩 역시 redirect처럼 웹 브라우저를 거쳐서 요청을 수행한다.

➊ 클라이언트의 웹 브라우저에서 첫 번째 서블릿에 요청합니다.
➋ 첫 번째 서블릿은 addHeader() 메서드를 이용해 두 번째 서블릿을 웹 브라우저를 통해서 요청합니다.
➌ 웹 브라우저는 addHeader() 메서드가 지정한 두 번째 서블릿을 다시 요청합니다.
8.2.4 refresh를 이용한 포워딩 실습
1. sec01.ex02 패키지를 만들고 redirect 포워딩 실습 때와 마찬가지로 두 개의 서블릿 클래스를 추가한다.

2. FirstServlet 클래스를 다음과 같이 작성한다. response의 addHeader() 메서드에 Refresh를 설정하고 1초 후 url=second에 지정한 second 서블릿에 브라우저에서 재요청하게 한다.

➊ 웹 브라우저에 1초 후 서블릿 second로 재요청합니다.
3. SecondServlet 클래스를 다음과 같이 작성한다. 이는 브라우저에서 재요청하면 브라우저로 메시지를 출력하는 서블릿이다.

4. 브라우저에서 http:localhost:8090/first1 로 요청하면 /second로 재요청한다


8.2.5 location을 이용한 포워딩
이번에는 자바스크립트의 location 객체를 이용하는 방법을 알아보겠다
1. sec01.ex03 패키지를 만들고 다음과 같이 두 개의 서블릿 클래스를 추가한다.
2. FirstServlet 클래스를 다음과 같이 작성한다. 서블릿에서 PrintWriter로 자바스크립트 코드를 출력해 서블릿 second로 재요청한다.

➊ 자바스크립트 location의 href 속성에 서블릿 second를 설정해 재요청합니다.
3. 마찬가지로 브라우저에서 재요청하면 브라우저로 메시지를 출력하는 두 번째 서블릿을 작성합니다.

4. 브라우저에서 요청


8.2.6 redirect 방식으로 다른 서블릿에 데이터 전달하기
redirect 방식을 이용하면 웹 브라우저를 통해 다른 서블릿을 호출하면서 원하는 데이터를 전달할 수도 있다.
1. 이번에는 redirect 방법으로 최초 요청한 서블릿에서 GET 방식으로 다른 서블릿으로 데이터를 전달하는 예제를 같은 방법으로 작성해 보겠다. FirstServlet 클래스를 다음과 같이 작성한다.

GET 방식을 이용해 이름/값 쌍으로 데이터를 다른 서블릿으로 전달합니다.
2. SecondServlet 클래스를 다음과 같이 작성한다. 이전 서블릿에서 전달된 값을 getParameter() 메서드를 이용해 가져온다.

name으로 이전 서블릿에서 전달된 lee를 받습니다.
3. 실행 결과


'스프링 부트 > 자바 웹을 다루는 기술' 카테고리의 다른 글
| 8.4 바인딩 (1) | 2024.01.21 |
|---|---|
| 8.3 dispatch를 이용한 포워드 방법 (2) | 2024.01.21 |
| 8.1 서블릿 포워드 기능 사용하기 (0) | 2024.01.20 |
| 7.5 회원 정보 삭제하기 (1) | 2024.01.20 |
| 7.4 회원 정보 등록하기 (0) | 2024.01.20 |