Servlet ウェブページリダイレクト

ドキュメントが新しい場所に移動した場合、クライアントにこの新しい場所を送信する必要があるとき、ウェブページリダイレクトを使用する必要があります。もちろん、ロードバランシングや、単純なランダムのためかもしれません。これらの場合にウェブページリダイレクトが使用される可能性があります。

リクエストを別のウェブページにリダイレクトする最も簡単な方法は、response オブジェクトの sendRedirect() メソッドを使用することです。以下はこのメソッドの定義です。

public void HttpServletResponse.sendRedirect(String location)
throws IOException 

このメソッドは、応答をステータスコードと新しいウェブページの位置とともにブラウザに送り返します。setStatus() メソッドと setHeader() メソッドを一緒に使用しても同じ効果が得られます。

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

サンプル

このサンプルでは、Servlet が別の場所にページリダイレクトを行う方法を示しています。

package com.サンプル.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");

      // 要重定向的新位置
      String site = new String("http://www.example.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://www.example.com にリダイレクトされます。

その他の拡張