include指令标记读入指定页面的内容并把这些内容和原来的页面内容融合到一起。这个过程发生在JSP转化成Servlet的阶段,最终所合成的JSP文件被Servlet容器转化成servlet。如果一个JSP页面使用include指令包含了另一个JSP页面,最终也只产生一个Servlet的Java源文件和一个class文件。

使用<jsp:include>动作包含其他JSP页面,其本质是调用了被包含文件所转化的Servlet对象的jspService()方法。也就是说,所被包含的JSP文件也对应有生成的Servlet源文件和class文件。如果一个JSP页面使用include动作包含了另一个JSP页面,一共会产生两个Servlet源文件和两个class文件。通过查看使用include动作的JSP页面生成的Servlet源文件,发现jspService()方法中有类似一下代码: JspRuntimeLibrary.include(request,response,"header.jsp",out,true),表明使用include动作它并没有将被包含JSP文件的代码融入自身中,只是在运行中引入了被包含页面执行后所产生的结果。



附上说明代码:

index.jsp:
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<%@ include file="file.txt" %>
<jsp:include page="file.txt"/>
<html>
  <head>
      
    <title>这是我第一个jsp页面</title>
 
  </head>
  
  <body>
    This is my JSP page. <br>
  </body>
</html>




file.txt:
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<HTML><BODY>
this is what?
大家好
</BODY></HTML>


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐