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 にリダイレクトされます。
その他の拡張