Servlet日記(2001/04/15)

本日の成果

 前回のServlet日記(2001/04/08) JSPのscope属性では、参考文献に倣って(猿まねをしてとも言う ^^;)、インクルードに<jsp:include />を使いました。JSPでは、<%@ include %>でもインクルードできるので、この二つの違いを調べました。

 まずこういうJSPファイルを用意します。コメントになっている2行のどちらかを有効にして、実験しようと言う魂胆です。

<jsp:useBean id="counter" scope="page" class="counterbean.Counter"/>

<html>
<head><title>Scope Test</title></head>
<body>Counter1 = <%= counter.getCounter() %><br>
<%-- Counter2 = <jsp:include page="counterpage2.jsp" flush="true" /><br> --%>
<%-- Counter2 = <%@ include file="counterpage2A.jsp" %> --%>
</body>
</html>

 counterpage2.jspは前回と同じく、以下の通りです。

<jsp:useBean id="counter" scope="page" class="counterbean.Counter"/>

<%= counter.getCounter() %>

 counterpage2A.jspは、以下の通り。

<%= counter.getCounter() %>

 で、まず<jsp:includeの方のコメントをはずして実行し、生成されたjavaファイルを見てみると、該当箇所はこのようになっていました。include()メソッドを用いて、実行時にインクルード処理を行っているようです。

{
  String _jspx_qStr = "";
  pageContext.include("counterpage2.jsp" + _jspx_qStr);
}

 一方、<%@ includeの方のコメントをはずして実行して、同様に生成されたjavaファイルを見てみると、該当箇所はこうなっています。こちらは、javaファイル生成時に展開されているようです。

  out.print( counter.getCounter() );

本日の教訓

 二つのインクルードの違いが分かりました。

Servlet日記の目次 ホーム