JSPのincludeディレクティブとは?基本構文とヘッダー・フッター共通化の実例を解説
includeディレクティブとは
includeディレクティブは、JSPの翻訳(トランスレーション)フェーズでファイルを取り込むために使用します。このディレクティブを記述しておくと、コンテナが翻訳フェーズのタイミングで、指定した外部ファイルの内容を現在のJSPに統合します。includeディレクティブは、JSPページ内の任意の位置に記述できます。
このディレクティブの一般的な記述形式は次のとおりです。
<%@ include file = "相対URL" %>
includeディレクティブで指定するファイル名は、実際には相対URLです。パスを指定せずにファイル名だけを記述した場合、JSPコンパイラはそのファイルがJSPと同じディレクトリに存在するものとみなします。
上記の構文と同等のXML形式は、次のように記述することもできます。
<jsp:directive.include file = "相対URL" />
実例:共通ヘッダーとフッターの取り込み
includeディレクティブの代表的な活用例が、複数のコンテンツページで共通のヘッダーとフッターを取り込む構成です。ここでは、次の3つのファイルを用意して動作を確認してみましょう。
- header.jsp … ヘッダー部分(アクセスカウンター付き)
- footer.jsp … フッター部分(著作権表示)
- main.jsp … 本文を表示するメインページ
header.jsp の内容
<%!
int pageCount = 0;
void addCount() {
pageCount++;
}
%>
<% addCount(); %>
<html>
<head>
<title>includeディレクティブの例</title>
</head>
<body>
<center>
<h2>includeディレクティブの例</h2>
<p>このサイトは <%= pageCount %> 回アクセスされました。</p>
</center>
<br/><br/>
footer.jsp の内容
<br/><br/>
<center>
<p>Copyright © 2010</p>
</center>
</body>
</html>
main.jsp の内容
<%@ include file = "header.jsp" %>
<center>
<p>ご訪問ありがとうございます。</p>
</center>
<%@ include file = "footer.jsp" %>
これら3つのファイルをすべてルートディレクトリに配置し、main.jspにアクセスすると、次のような出力が得られます。
includeディレクティブの例 このサイトは 1 回アクセスされました。 ご訪問ありがとうございます。 Copyright © 2010
main.jspをブラウザで再読み込みすると、ページのアクセスカウンターが増えていくことが確認できます。これは、includeディレクティブによってheader.jspが翻訳フェーズで取り込まれ、その中のカウント処理が実行されているためです。
補足:jsp:includeアクションとの違い
似た機能に<jsp:include>アクションがありますが、両者は動作のタイミングが異なります。includeディレクティブは翻訳フェーズでファイルの内容を静的に取り込むのに対し、<jsp:include>アクションはリクエスト時(実行時)に動的にファイルを取り込みます。ヘッダーやフッターのような静的な共通部分にはincludeディレクティブが、実行時に内容が変わるコンテンツにはjsp:includeアクションが適しています。
まとめ
Webページのレイアウトは自由な発想で設計できますが、サイトの動的な部分は別ファイルに分割し、メインファイルからincludeディレクティブで取り込む構成がおすすめです。共通部分を一つのファイルにまとめておけば、修正が必要になった際も該当ファイルを編集するだけで全ページに反映され、メンテナンス性が大きく向上します。
-
SQLクエリでフィールド名に「from」を使うと問題が発生する理由と解決方法
SQLクエリで「from」を列名として使うとエラーになる理由 from はMySQLにおける予約語(リザーブドワード)であるため、そのまま列名として使用することはできません。SQLでは FROM 句がテーブルを指定するために使われる重要なキーワードであり、識別子としてそのまま記述すると構文エラーが発生します。 この問題を回避するには、バッククォート(`)で列名を囲みます。まず、テーブルを作成してみましょう。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, `fr
-
JSPのライフサイクルとは?4つのフェーズ(コンパイル・初期化・実行・破棄)をわかりやすく解説
JSPのライフサイクルとは、JSPページが作成されてから破棄されるまでの一連のプロセスを指します。基本的な流れはサーブレットのライフサイクルとほぼ同じですが、JSPには「サーブレットへのコンパイル」という追加ステップが存在する点が大きな特徴です。JSPのライフサイクル:4つのフェーズJSPは、以下の4つの段階を順番にたどって動作します。コンパイル(Compilation)初期化(Initialization)実行(Execution)破棄/クリーンアップ(Cleanup)これらのフェーズはサーブレットのライフサイクルと非常によく似ています。それぞれの役割を理解しておくことで、JSPの動作原理の