
共通ヘッダ等を作りたい場合は、他のJSPファイルをインクルードするという形を取りますよね。
それには、二通りの方法があります。
JSPインクルードのさせ方の種類
インクルード方法 | 特徴 |
---|---|
アクション(jsp:include)によるインクルード | 他のJSPの実行結果のHTMLをインクルードする。動的インクルード |
ディレクティブ(@include)によるインクルード | 他のJSPをそのまま、取り込む。静的インクルード |
アクション(jsp:include)によるインクルード
他のJSPの実行結果のHTMLを、取り込みます。
サンプル
index.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<%@page contentType="text/html; charset=UTF-8" %> HTML> <HEAD> <TITLE>ArrayList</TITLE> </HEAD> <BODY> <jsp:include page="header.jsp" /> インクルードテスト </BODY> </HTML> |
header.jsp
1 2 3 |
<%@page contentType="text/html; charset=UTF-8" %> <h1>ヘッダ</h1> |
実行結果
flush属性
1 |
<jsp:include page="header.jsp" flush="true" /> |
flushをtrueにするとクライアントに出力する前にバッファをフラッシュしてクライアントへ出力できます。(デフォルトではfalseになっています。)
ディレクティブ(@include)によるインクルード
他のJSPの記述、そのものをそのまま取り込みます。コンパイル(サーブレット変換)前に読み込むので1つのJSPページになります。(静的インクルード)
includeアクションの場合はコンパイル(サーブレット変換)前ではなく、実行時に読み込みます。なので別々のjsp扱いになるので複数のjspページという扱いになりそれぞれサーブレットに変換されます。(動的インクルード)
なので、ディレクティブによる指定の場合は1つのjspになるので取り込まれるページの方には文字コードの指定などは不要になります。
記述例は、下記のページで解説しています。
アクション(jsp:include)に比べての特徴
他のJSPをそのまま取り込むので、「import文」をそのまま取り込むことも可能。
ただし、アクションの方はjsp同士で変数の競合が起こらなかったり、取り込む際にインクルード元の再コンパイルなどが不要というメリットなどがあります。
この記事へのコメントはありません。