<jsp:include>、<jsp:forward>
このページでは、JSPで定義されているアクションタグのうち、<jsp:include>、<jsp:forward>について解説します。
<jsp:include>
JSPプログラム中に<jsp:include>があると<jsp:include>で指定したファイルの処理を実行します。指定したファイルの処理の実行後、再び<jsp:include>が記載されたプログラムに処理を実行します。
<jsp:include page="ファイル" flush="true | false"/>
<jsp:include page="ファイル" flush="true | false"/>
<jsp:param name="パラメータ名" value="パラメータ値"/>
</jsp:include>
<jsp:include>の属性
属性名 | 説明 | デフォルト |
---|---|---|
page | インクルードするファイルをコンテキストルートからの相対パスで指定します。 | - |
flush | ファイルを実行する際に、バッファ内のデータをフラッシュするかを指定します。 | false |
指定したファイルに値を渡したい場合は<jsp:param>を使用します。<jsp:param>は<jsp:param name="パラメータ名" value="パラメータ値" />の構文で使用します。指定したファイルでは、request.getParameter("パラメータ名")メソッドでパラメータ値を取得できます。
<jsp:include page="regis.jsp">
<jsp:param name="name" value="java" />
</jsp:include>
<jsp:include>のよく似た機能に、includeディレクティブがあります。違いは、includeディレクティブがコンパイルされるときに指定したファイルをインクルードするのに対し、<jsp:include>はクライアントからリクエストがあったとき、指定したファイルをインクルードします。そのため、条件処理により実行するファイルを変えたい場合などは<jsp:include>を使用します。
また、もう一つの違いとしてincludeディレクティブでは指定したファイル内で、指定元ファイル(includeディレクティブが記載されたファイル)で宣言された変数、メソッドを参照できるのに対して、<jsp:include>では指定したファイル内で、指定元ファイル(<jsp:include>が記載されたファイル)で宣言された変数、メソッドを参照できないというのがあります。
【例1】 変数valueに指定された値により、実行するファイルを変える例です。
include.jsp
<HTML>
<BODY>
<%@ page contentType="text/html; charset=Windows-31J" %>
<%-- (1)変数valueを宣言し、4を代入しています。 --%>
<%! int value = 4; %>
<%-- (2)変数valueの値が5以上の場合は、result1.txtファイルを実行し、5未満の場合は、result2.txtファイルを実行します。ここでは変数valueの値が4のため、result2.txtを実行、表示します。--%>
<%
if (value >= 5) {
%>
<jsp:include page="result1.txt" />
<%
} else {
%>
<jsp:include page="result2.txt" />
<%
}
%>
</BODY>
</HTML>
result1.txt
変数valueは5以上です。
result2.txt
変数valueは5未満です。
【実行結果】JSPプログラムの実行方法に関しては、Javaの道:Tomcat(プログラム配置・実行)を参照してください。

<jsp:forward>
<jsp:forward>は<jsp:forward>で指定したファイルに処理を転送するために使用します。<jsp:forward>タグの前に、何らかの値を出力する処理を行ってはいけません。値を出力する処理が行われている場合は、例外がスローされます。<jsp:include>との違いは、<jsp:include>は指定したファイルの処理が終わると、再び処理が指定元に戻るのに対して、<jsp:forward>は指定したファイルに処理が転送され、再び処理が指定元に戻ることはありません。
<jsp:forward page="ファイル"/>
<jsp:forward page="ファイル">
<jsp:param name="パラメータ名" value="パラメータ値"/>
</jsp:forward>
<jsp:forward>の属性
属性名 | 説明 | デフォルト |
---|---|---|
page | フォワード先のファイルをコンテキストルートからの相対パスで指定します。 | - |
指定したファイルに値を渡したい場合は<jsp:param>を使用します。<jsp:param>は<jsp:param name="パラメータ名" value="パラメータ値" />の構文で使用します。指定したファイルでは、request.getParameter("パラメータ名")メソッドでパラメータ値を取得できます。
<jsp:forward page="regis.jsp">
<jsp:param name="name" value="java" />
</jsp:forward>
【例2】<jsp:forward>で指定したファイルに処理を転送します。転送する際、<jsp:param>により値を渡します。転送先ファイルでは渡された値を取得、表示します。
forward.jsp
<HTML>
<BODY>
<%-- (1)属性pageに指定されたファイルに処理を転送します。
転送の際、<jsp:param>でパラメータnameの値を転送先ファイルに渡します。 --%>
<jsp:forward page="showName.jsp">
<jsp:param name="name" value="java"/>
</jsp:forward>
</BODY>
</HTML>
showName.jsp
<HTML>
<BODY>
<%-- (1)転送先ファイルではrequest.getParameterメソッドで指定したパラメータの値を取得し、表示します。 --%>
Hello! <%= request.getParameter("name") %> さん
</BODY>
</HTML>
【実行結果】JSPプログラムの実行方法に関しては、Javaの道:Tomcat(プログラム配置・実行)を参照してください。

4<jsp:include>、<jsp:forward>