今回作成する JSPファイルは計三つで、以下のようなディレクトリ構成で話を進めます。
server.xml ( 抜粋 )
<Context path="/wtomcat"
reloadable="true"
docBase="C:\eclipse\workspace\wtomcat"
workDir="C:\eclipse\workspace\wtomcat\work\org\apache\jsp" />
プログラムの動作ですが、footer.jspがページフッタとして、現在の日付を表示するというシンプルなものです。 page1.jspと page2.jspは footer.jspをインクルードして、それぞれにアクセスがあった場合にフッタを表示させます。
動作サンプル
footer.jsp
<%@ page import="java.util.Date, java.text.SimpleDateFormat" %>
<hr>
<div align="right">
<%
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
out.print(sdf.format(date));
%>
</div>
先ず Dateクラス、SimpleDateFormatクラスを使用するため、pageディレクティブの import属性で、てそれぞれを importする宣言を行います。この宣言がないとこれらのクラスは使用することが出来ません。
インポートしたそれぞれのクラスはスクリプトレット内で使用しています。各クラスの使用方法は割愛しますが、dateオブジェクトは現在の日付を保持し、SimpleDateFormatのインスタンスで 「yyyy/mm/dd」 形式で出力するよう指定しています。
include ディレクティブ
page1.jsp
<%@ page language="java" contentType="text/html; charset=Windows-31J" %>
<html>
<body>
<h1>page1</h1>
<%@ include file="footer.jsp"%>
</body>
</html>
page1.jspでは include ディレクティブを使用して footer.jspをインクルードしています。 page1.jspに日付を出力する記述はありませんが、footer.jspをインクルードすることによって、上記動作例のようにフッタとして日付を出力できます。
include ディレクティブはコンパイル時にインクルードファイルをのタグが指定されている場所に挿入してから、そのJSPファイルをサーブレットクラスに変換します
(静的参照)。そのため、footer.jspを後で変更しても変更は反映されません。
include アクション
page2.jsp
<%@ page language="java" contentType="text/html; charset=Windows-31J" %>
<html>
<body>
<h1>page2</h1>
<jsp:include page="footer.jsp" flush="true" />
</body>
</html>
page2.jspでは include アクションを使用して footer.jspをインクルードしています。 include アクションは includeディレクティブと異なり、リクエストのあった時点で常にその時点の対象ファイルが組み込まれます
(動的参照)。そのため、footer.jspを後で変更しても変更が反映されます。