includeアクション

広告

「include」アクションは指定したHTMLページやJSPページを指定の場所へインクルードします。

「param」アクションの書式は次の通りです。

<jsp:include page="インクルードするページ" flush="true | false" />

属性値として「page」に対してインクルードするHTMLページ又はJSPページを指定します。ページはアクションを記述するJSPページからの相対パスで指定して下さい。また「flush」に「true」を設定するとインクルードを行う前にバッファをフラッシュしてクライアントへ出力します。デフォルトでは「false」となっており省略可能です。

サンプルプログラムの実行

それでは実際に試してみましょう。コンテキストファイルは次のようにします。

<Context path="/action"
docBase="d:/jsp-sample/action"/>

JSPページは次のようになります。

include.jsp

<%@ page contentType="text/html;charset=Shift_JIS" %>

<html>
<head><title>includeテスト</title></head>
<body>
<h1>includeテスト</h1>

<jsp:include page="includeSrc.jsp" />

</body>
</html>

includeSrc.jsp

<%@ page contentType="text/html;charset=Shift_JIS" %>

<%@ page import="java.util.Date" %>

<p>インクルードされた部分です</p>

<%
out.println(new Date());
%>

JSPページはコンテキストファイルで指定したドキュメントルートの直下に置いておきます。

[D] -- jsp-sample
        |
        +-- action
        |    |
             +-- (include.jsp)
             |
             +-- (includeSrc.jsp)
             |

それでは「http://localhost/action/include.jsp」にブラウザからアクセスします。次のように表示されれば成功です。

includeアクション

includeディレクティブとの違い

「include」アクションは「include」ディレクティブと似ていますが、「include」ディレクティブは指定したページに記載されている内容をそのまま取り込んで一つのページとして扱います。それに対して「include」アクションの場合は指定したページを実際に実行した結果を取り込みます。つまり「include」ディレクティブの場合は1つのJSPページとなりますが、「include」アクションの場合は2つのJSPページがそれぞれサーブレットに変換されて動作することになります。

その為、「include」アクションの方はインクルードされるページの方も単独で動作するように記述が必要です。具体的に言うとインクルードされる方のページで次の記述が無かった場合、そのページ内で日本語を使っていると文字化けします。

<%@ page contentType="text/html;charset=Shift_JIS" %>

「include」ディレクティブであれば、指定したページの出力ではなくページに書かれている内容をインクルード元のページに取り込みますのでインクルードされるページの方には文字コードの指定は不要です。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)