English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet 웹 페이지 리디렉션

문서가 새 위치로 이동하면, 이 새 위치를 클라이언트에게 보내야 할 때, 웹 페이지 리디렉션을 사용해야 합니다. 물론, 로드 밸런싱이나 간단한 랜덤으로도 사용될 수 있습니다. 이러한 경우들도 모두 가능합니다.

다른 웹 페이지로 요청을 리디렉션하는 가장 간단한 방법은 response 객체의 sendRedirect() 메서드를 사용하는 것입니다. 이 메서드의 정의는 다음과 같습니다:

public void HttpServletResponse.sendRedirect(String location)
throws IOException

이 메서드는 응답과 상태 코드, 새 웹 페이지 위치를 브라우저로 보냅니다. setStatus()와 setHeader() 메서드를 함께 사용하여 동일한 효과를 얻을 수 있습니다:

....
String site = "http://ko.oldtoolbag.com";
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site); 
....

온라인 예제

이 예제에서 Servlet이 다른 위치로 페이지 리디렉션을 어떻게 수행하는지 보여줍니다:

package com.w3codebox.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class PageRedirect
 */
@WebServlet("/PageRedirect)
public class PageRedirect extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 응답 내용 유형 설정
      response.setContentType("text/html;charset=UTF-8");
      // redirect할 새 위치
      String site = new String("http://ko.oldtoolbag.com");
      response.setStatus(response.SC_MOVED_TEMPORARILY);
      response.setHeader("Location", site);    
    }
}

지금 위의 Servlet을 컴파일하고 web.xml 파일에 다음 항목을 생성하겠습니다:

....
 <servlet>
     <servlet-name>PageRedirect</servlet-name>
     <servlet-class>PageRedirect</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>PageRedirect</servlet-name>
     <url-pattern>/TomcatTest/PageRedirect</url-pattern>
 </servlet-mapping>
....

지금 URL http://localhost:8080/PageRedirect 이 Servlet을 호출합니다. 이는 주어진 URL http://ko.oldtoolbag.com.