JSTL リファレンス

<c:redirect>
xmlns:c="http://java.sun.com/jsp/jstl/core"

SYNOPSIS

<c:redirect
url*="URI"
context="コンテキスト名"
>
<c:param> * -  リダイレクト先の URL に連結するリクエストパラメータを指定します.
</c:redirect>

説 明

url 属性で指定された URL にリダイレクトします。 JSP 内でここまでに出力した内容を全てキャンセルし 302 Moved Temporarily レスポンスを返し、JSP の処理を終了します。

リダイレクト先の URL での処理は別リクエスト扱いになるため、リクエスト属性に よるデータの連携は行えません。またリクエストの再実行が発生するため <jsp:forward> で済む場合はなるべくそちらを使用してください。 転送相手が全く別のサイトやサーブレットでない場合や、リロード対策のために クライアント側のブラウザの URL を変更したい場合などに使用します。

属 性

url="URI"
required

リダイレクト先の URL を絶対パスまたは相対パス形式で指定します。

context 属性を省略した場合、この URL は同一 Web アプリケーション内での相対パスと解釈されます。 つまり / で始まる URL は同一 Web アプリケーションのコンテキストルートからの位置を示し、 また / で始まらない URL はこのタグが記述されている JSP からの相対 URL とみなされます。

context 属性と共に指定した場合、指定した Web アプリケーションのコンテキストルートからの位置を示します。 この時 url 属性は / から始める必要があります。

context="コンテキスト名"
optional

リダイレクト先の Web アプリケーションを / から始まる値で指定します。 context 属性を指定した場合は url 属性も / で 始める必要があります。

Tomcat 6.0 では対象の Web アプリケーションがコンテナ上で動作していなく てもエラーになりません。

内 容

リダイレクト先の URL に連結するリクエストパラメータを指定します。

使用例

http:// から始まる絶対 URL でリダイレクト先を指定します。
JSP
<%@ page language="java"
         contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" session="false" %>
<%@ taglib prefix="c" uri="/WEB-INF/tld/c.tld" %>
<html>
<body>
<c:redirect url="http://www.google.co.jp/" />
</body>
</html>
この JSP のレスポンスは以下の通り。302 レスポンスが返され内容は送信されません。
response
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://www.google.co.jp/
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Fri, 21 Dec 2007 12:12:45 GMT
Connection: close
url 属性が / から始まる相対パスで指定されている場合、 同一 Web アプリケーションのコンテキストルートからのパスとして解釈されます。
http://localhost:8081/lab.moyo.biz/sample/test.jsp
<c:redirect url="/foo/index.html" />
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://localhost:8081/lab.moyo.biz/foo/index.html
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Fri, 21 Dec 2007 12:31:04 GMT
Connection: close
url 属性が / から始まらない場合は、その JSP からの相対パスとして解釈されます。
http://localhost:8081/lab.moyo.biz/sample/test.jsp
<c:redirect url="foo/index.html" />
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://localhost:8081/lab.moyo.biz/sample/foo/index.html
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Fri, 21 Dec 2007 12:16:32 GMT
Connection: close
リダイレクト先の URL にリクエストパラメータを追加します。
http://localhost:8081/lab.moyo.biz/sample/test.jsp
<c:redirect url="/foo/bar.jsp">
    <c:param name="name" value="値" />
</c:redirect>
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://localhost:8081/lab.moyo.biz/foo/bar.jsp?name=%e5%80%a4
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Fri, 21 Dec 2007 16:42:08 GMT
Connection: close
CVS 2008/03/09