引入的文件如果是jsp则应定义为***.jspf文件,如果其他文件可定义为***.inc文件,即include file。 jsp:include是既可以静态包含又可以动态包含,用jsp:include相当于编译两个不同的文件,所以如果被包含文件中仅仅是显示某些东西(例如被包含文件是纯HTML)的话,这种情况下,用jsp:include和@include来包含文件的效果是一样的,但如果要用jsp:include来显示被包含文件中定义的变量就不行了。
但是 include 指令:<%@ inlucde page="" %>除了可以引jspf还可以引servlet,要使用引入文件中定义的变量,只能用@include指令。
也就是<%@ include file="one.jsp" %>,但这在一般情况下都不是动态的,是在jsp页面第一次编译时,把它导入的。而且JSP中@开头的语句都要先于其他语句执行。
第二种解释:
<%@ include file=” ”%>,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。
这里对翻译阶段进行一下说明:我们知道,jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的。服务器需要一个jsp容器来处理jsp页面。jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求。
Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?JSP Page implementation class),并编译这个servlet。这两步就构成了翻译阶段.
由此我们就会知道:jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个Java文件。
执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.
引入内容的不同:
<%@ include file=”relativeURI”%>引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.
在jsp中include指令有2种方式来引入一个文件
1、说明标签<%@ include file="xxx.jsp"%>
2、动作标签<jsp:include page="xxx.jsp"/>
3、<jsp:include>元素允许你包含动态文件和静态,而include说明标签仅仅是把一个文件内容当成静态追加到主文件中去。
4、如果文件仅是静态文件,可以直接利用<%@ include file="xxx.jsp"%>包含进去,如果是txt文件,最好把文件格式改成jsp文件然后包含进去就可以。