<%@include%>
JSP 1.0 以降
SYNOPSIS
<%@include
%>
| file*="URI" |
説 明
file 属性で指定したファイルの内容をこの位置に取り込みます。
<jsp:include> に似ていますが、<jsp:include> が
出力結果のみを取り込むのに対して <%@include%> はファイルの内容レベルで
インライン展開します (C/C++ の #include と似ています)。
ソースをインライン展開するため <jsp:include> に比べて処理は速くなりますが、
一つ一つの JSP (から生成されたクラス) のサイズが大きくなります。またトリッキーな記述を可能にする
この機能に頼り過ぎた構成はメンテナンス性が著しく低下する傾向にあります。
最近ではカスタムタグや EL, JSTL のためにこの命令でなければ出来ないという事が少なくなってきました。 例えば数画面程度を使って何かの動作検証を行ったり開発支援ツールを作るような場合の、共通化作業よりも JSP のみで完結できるコンパクトさが必要な状況でたまに使っています。
参照:
<jsp:include> 使用例
以下は JSP 全体を try-catch ブロックで囲うのと同等の記述です。
相手先 JSP の出力内容のみを取り込む
共通ファイルに定義されているスクリプトレット用の定数やメソッドを
この JSP 内でも使えるようにします。
<jsp:include> では
このような書き方は出来ません。
JSP
<%@ include file="header.jsp" %> hello, world. ここに body タグの中身を記述します。 この中で例外が発生しても 500 エラーにはなりません。 <%@ include file="footer.jsp" %>
header.jsp
<% try{ %>
<html>
<body>
footer.jsp
<% } catch(Throwable ex){
ex.printStackTrace();
} finally { %>
<body>
<html>
<% } %>
JSP
<%@ include file="const.jsp" %>
<% if(DEBUG_MODE){ %>
<span style="color:red;font-weight:bold;">テストモード</span>
<% } %>
現在時刻: <%= getCurrentTime() %>
const.jsp
<%@ page import="java.util.*, java.text.*" %>
<%!
private static final boolean DEBUG_MODE = true;
private static final int MAX_VALUE = 1000;
private static final int MIN_VALUE = 1;
private static final String getCurrentTime(){
return DateFormat.getDateTimeInstance().format(new Date());
}
%>