JSP リファレンス

<jsp:forward>
xmlns:jsp="http://java.sun.com/JSP/Page"
JSP 1.0 以降

SYNOPSIS

<jsp:forward
page*="URI"
>
<jsp:param> * -  呼び出し先の JSP やサーブレットに渡すパラメータ.
</jsp:forward>

説 明

page 属性で指定した JSP やサーブレット、HTML などにリクエストを転送します。 この命令はサーブレット内から RequestDispatcherJava™ API リファレンス#forward() を呼び出すのと同じです。この命令までに出力された内容は全てキャンセルされ、 この命令より後ろの処理は実行されません

<jsp:include> がその URL の内容を単純に その位置に挿入するのに対して、<jsp:forward> はページの出力処理を 呼び出し先に完全に移管します。この動作は HTTP リダイレクト (HttpServletResponse#sendRedirect()) と似ていますが、リクエスト属性に 設定されている内容をそのまま呼び出し先に渡せるという利点があります。

既に出力バッファがフラッシュされている状態でこの命令を呼び出すと例外が発生します。 バッファがフラッシュされる要因としては:

  1. 明示的にout.flush() を呼び出している
  2. <jsp:include> などのフラッシュを伴う命令を呼び出している
  3. ここまでに出力した内容がこの JSP のバッファサイズを越えている

などが考えられます。 この場合、フラッシュが行われる前に <jsp:forward> が実行されるように JSP 内の設計を再考する必要があります。

属 性

page="URI"
required
リクエストの転送先 URL。 Web コンテキストルートを基点とした絶対パスか、この JSP からの相対パスを指定します。 同一 Web アプリケーション内のパスのみを指定できます。

内 容

JSP 1.1 以降
呼び出し先の JSP やサーブレットに渡すパラメータ。 name 属性と value 属性を持つことが出来ます。 ここで指定した値は呼び出し先のサーブレットや JSP から request.getParameterJava™ API リファレンス(name) を用いて参照することが出来ます。

使用例

特定のドメイン以外からのリクエストを禁止します。
JSP
<% if(! request.getRemoteHost().endsWith(".myfriend.com")){ %>
  <jsp:forward page="forbidden.jsp" />
<% } %>
暗黙的に生成されるセッションが新規のものであればセッションタイムアウトとしてログイン画面を表示します。
JSP
<% if(session.isNew()){ %>
  <jsp:forward page="login.jsp">
    <jsp:param name="message" value="Session Timeout!" />
  </jsp:forward>
<% } %>
CVS 2008/03/09