JSPページリダイレクトとは?仕組みと実装方法を徹底解説
ページリダイレクトとは
ページリダイレクトは、ドキュメントが新しい場所へ移動した際に、クライアント(ブラウザ)をその新しい場所へ誘導するためによく使われる仕組みです。主な利用シーンとしては、サーバーの負荷分散のためや、アクセス先をランダムに振り分けたい場合などが挙げられます。
sendRedirect()メソッドによるリダイレクト
リクエストを別のページへリダイレクトする最も簡単な方法は、responseオブジェクトのsendRedirect()メソッドを使用することです。このメソッドのシグネチャは以下の通りです。
public void response.sendRedirect(String location) throws IOException
このメソッドを呼び出すと、ステータスコードと新しいページのURLを含んだレスポンスがブラウザへ送り返され、ブラウザは指定された新しい場所へ自動的に移動します。
setStatus()とsetHeader()を組み合わせる方法
setStatus()メソッドとsetHeader()メソッドを組み合わせて使用することでも、同じリダイレクト処理を実現できます。以下がその例です。
....
String site = "https://www.newpage.com" ;
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site);
....ここでは、SC_MOVED_TEMPORARILY(HTTPステータスコード302:一時的な移動)を設定し、「Location」ヘッダーに転送先のURLを指定しています。これにより、ブラウザは指定されたURLへ自動的に遷移します。
JSPでのページリダイレクト実装例
次に、JSPが実際に別の場所へページリダイレクトを行う具体的なサンプルコードを見てみましょう。
サンプルコード
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Page Redirection</title>
</head>
<body>
<center>
<h1>Page Redirection</h1>
</center>
<%
// リダイレクト先の新しいURL
String site = new String("https://www.photofuntoos.com");
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site);
%>
</body>
</html>動作確認の手順
上記のコードを「PageRedirect.jsp」というファイル名で保存し、ブラウザから https://localhost:8080/PageRedirect.jsp にアクセスしてみてください。すると、自動的に https://www.photofuntoos.com へ転送されることが確認できます。
補足:sendRedirect()とforward()の違い
sendRedirect()によるリダイレクトでは、ブラウザとの間で一度ラウンドトリップ(往復通信)が発生する点に注意が必要です。一方、RequestDispatcherのforward()はサーバー内部で処理を転送するため、同じリクエスト/レスポンスオブジェクトが引き継がれます。外部サイトへの転送にはsendRedirect()が必須となるため、用途に応じて適切な方法を選択しましょう。
-
<jsp:forward>とresponse.sendRedirect()の違いとは?JSPのページ遷移方法を徹底解説
JSPにおける2つのページ遷移方法 JSPでページを切り替える(遷移させる)方法として、<jsp:forward>タグを使う方法と、response.sendRedirect()メソッドを使う方法があります。どちらも画面を別のページに移すための仕組みですが、動作の仕組みがまったく異なります。 <jsp:forward>の仕組み(フォワード) <jsp:forward>要素は、クライアントからのリクエスト情報を含むリクエストオブジェクトを、あるJSPファイルから別のファイルへそのまま転送する機能です。 転送先には、HTMLファイル・別のJSPファイル・サーブ
-
JSPページリダイレクトとは?仕組みと実装方法を徹底解説
ページリダイレクトとはページリダイレクトは、ドキュメントが新しい場所へ移動した際に、クライアント(ブラウザ)をその新しい場所へ誘導するためによく使われる仕組みです。主な利用シーンとしては、サーバーの負荷分散のためや、アクセス先をランダムに振り分けたい場合などが挙げられます。sendRedirect()メソッドによるリダイレクトリクエストを別のページへリダイレクトする最も簡単な方法は、responseオブジェクトのsendRedirect()メソッドを使用することです。このメソッドのシグネチャは以下の通りです。public void response.sendRedirect(String lo