jsp:include page="" 和 include file="" 的区别

下面用三个实验,更清淅的理解 <jsp:include page=""/> 和 <%@ include file="" %> 的区别。

<jsp:include page=""/> 包含被 include 文件的输出
<%@ include file="" %> 包含被 include 文件的代码


a.jsp 内容:

1<jsp:include page="b.jsp" />

b.jsp 内容:(空)

_a.class a.jsp编译成类的内容:

1_jspService() {
2    JspWriter jspwriter = pagecontext.getOut();
3
4    // 把b.jsp的内容输出到_a.class的jspwriter
5    JspRuntimeLibrary.include(httpservletrequest, httpservletresponse, "b.jsp", jspwriter, false);
6}

-------------------------------------------------------------------------------------

a.jsp 内容:

1<%@ include file = "b.jsp" %>

b.jsp 内容:

1abcd

_a.class a.jsp编译成类的内容

1// b.jsp中"abcd"字符串作为_a.class的成员变量
2private static final char _jsp_string1[]= "abcd".toCharArray();
3_jspService() {
4    JspWriter jspwriter  =  pagecontext.getOut();
5    jspwriter.write(_jsp_string1);
6}

-------------------------------------------------------------------------------------

a.jsp 内容:

1<%@ include file = "b.jsp" %>

b.jsp 内容:

1<% out.println("efg"); %>

_a.class a.jsp编译成类的内容

1_jspService()  {
2    jspwriter.println( " efg " );
3}

以上是在用 WebSphere Application Server 6.1 编译生成的代码反编译出来的 _a.class。

接下来要看看 jsp 指令,如:

<%@page contentType="text/html; charset=UTF-8" %>
<%@page autoFlush="false" %>
<%@page buffer="20kb" %>
<%@page isThreadSafe="true" %>
<%@page errorPage="" %>
<%@page extends="" %>
....................

会体现在生成的 class 文件的何处,分别起什么作用。 永久链接 https://yanbin.blog/jsp-include-page-include-file/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。