<目次>
(1) JSPにおけるincludeディレクティブとjsp:includeアクションの違い
(1-1) includeディレクティブ
(1-2) jsp:includeアクション
(1-3) 参考:コンパイルされたファイルの確認方法
(1) JSPにおけるincludeディレクティブとjsp:includeアクションの違い
あるページに別のページを組み込む際に、includeディレクティブによる記述や、jsp:includeアクションによる記述と2通りの方法があり、いずれも見た目の結果は同じに見えるのですが内部的な処理は異なっており、当記事ではこの両者の違いについてご紹介していきます。
(図111)見た目は同じに見える
(1-1) includeディレクティブ
●概要
こちらは「静的」なincludeです。「静的」というのは、jspの「コンパイル時」にincludeディレクティブで指定されたソースコードを合体(取り込み)して、合わせた状態でコンパイルする方式です。jspがコンパイルされた断面の状態で、画面に表示される事になります。
A1.jspとB2.jspを合体してコンパイルした結果がクライアントから照会されます。
●内部的な処理
(コンパイル結果例)
~中略~ out = pageContext.getOut(); _jspx_out = out; ~中略~ out.write("<body>\n"); out.write("<div>(1)includeディレクティブでHeader.jspを導入</div>\n"); out.write("\n"); out.write("\n"); out.write("<!DOCTYPE html>\n"); out.write("<html>\n"); out.write("<head>\n"); out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n"); out.write("</head>\n"); out.write("<body>\n"); out.write("<mark>\n"); out.write("################# ヘッダー開始 #################<br />\n"); out.write("<mark>ここはヘッダーです。</mark><br />\n"); out.write("################# ヘッダー終了 ###################<br />\n"); out.write("</mark>\n"); out.write("</body>\n"); out.write("</html>"); out.write("\n"); out.write("<br />\n");
(図122)includeディレクティブによる取り込み結果例
(1-2) jsp:includeアクション
こちらは「動的」なincludeです。
out.write("<div>(2)jsp:includeアクションでHeader.jspを導入</div>\n"); org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "ITxxxx_Header.jsp", out, false);
(図132)
(1-3) 参考:コンパイルされたファイルの確認方法
Eclipseを使用している場合のコンパイルされたjspの確認方法については、下記の記事をご参考下さい。