プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

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ディレクティブで取り込む構成がおすすめです。共通部分を一つのファイルにまとめておけば、修正が必要になった際も該当ファイルを編集するだけで全ページに反映され、メンテナンス性が大きく向上します。

  1. SQLクエリでフィールド名に「from」を使うと問題が発生する理由と解決方法

    SQLクエリで「from」を列名として使うとエラーになる理由 from はMySQLにおける予約語(リザーブドワード)であるため、そのまま列名として使用することはできません。SQLでは FROM 句がテーブルを指定するために使われる重要なキーワードであり、識別子としてそのまま記述すると構文エラーが発生します。 この問題を回避するには、バッククォート(`)で列名を囲みます。まず、テーブルを作成してみましょう。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, `fr

  2. JSPのライフサイクルとは?4つのフェーズ(コンパイル・初期化・実行・破棄)をわかりやすく解説

    JSPのライフサイクルとは、JSPページが作成されてから破棄されるまでの一連のプロセスを指します。基本的な流れはサーブレットのライフサイクルとほぼ同じですが、JSPには「サーブレットへのコンパイル」という追加ステップが存在する点が大きな特徴です。JSPのライフサイクル:4つのフェーズJSPは、以下の4つの段階を順番にたどって動作します。コンパイル(Compilation)初期化(Initialization)実行(Execution)破棄/クリーンアップ(Cleanup)これらのフェーズはサーブレットのライフサイクルと非常によく似ています。それぞれの役割を理解しておくことで、JSPの動作原理の