<jsp:forward>
xmlns:jsp="http://java.sun.com/JSP/Page"
JSP 1.0 以降
SYNOPSIS
<jsp:forward
>
</jsp:forward>
| page*="URI" |
| <jsp:param> * | - | 呼び出し先の JSP やサーブレットに渡すパラメータ. |
説 明
page 属性で指定した JSP やサーブレット、HTML などにリクエストを転送します。
この命令はサーブレット内から
RequestDispatcher
を呼び出すのと同じです。この命令までに出力された内容は全てキャンセルされ、
この命令より後ろの処理は実行されません。
#forward()
<jsp:include> がその URL の内容を単純に
その位置に挿入するのに対して、<jsp:forward> はページの出力処理を
呼び出し先に完全に移管します。この動作は HTTP リダイレクト
(HttpServletResponse#sendRedirect()) と似ていますが、リクエスト属性に
設定されている内容をそのまま呼び出し先に渡せるという利点があります。
既に出力バッファがフラッシュされている状態でこの命令を呼び出すと例外が発生します。 バッファがフラッシュされる要因としては:
- 明示的に
out.flush()を呼び出している -
<jsp:include>などのフラッシュを伴う命令を呼び出している - ここまでに出力した内容がこの JSP のバッファサイズを越えている
などが考えられます。
この場合、フラッシュが行われる前に <jsp:forward> が実行されるように JSP 内の設計を再考する必要があります。
属 性
内 容
JSP 1.1 以降
呼び出し先の JSP やサーブレットに渡すパラメータ。
name 属性と value 属性を持つことが出来ます。
ここで指定した値は呼び出し先のサーブレットや JSP から
request.getParameter
(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>
<% } %>