JSP 中两种 include 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP 中两种 include 的区别相关的知识,希望对你有一定的参考价值。

转自:http://www.cnblogs.com/lazycoding/archive/2011/04/04/two_include.html

<%@include file="relativeURI"%> 可以叫作静态include(静态包含),是jsp指令中的一种。

<jsp:include page=”relativeURI” flush=”true” />叫作动态include(动态包含),是jsp动作的一种。

引入内容的不同

<%@include file="relativeURI"%> 引入静态文本,在JSP页面被转化成servlet之前和它融和到一起,先包含、后编译,不会检查所含文件的变化,适用于包含静态页面,可以理解为纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享, 两者高度紧密结合,不能有变量同名的冲突,而页面设置也可以借用主文件的。

<jsp:include page=”relativeURI” flush=”true” /> 引入执行页面或servlet所生成的应答文本. 被包含的文件先编译,后包含进来,然后显示。

处理时间的不同

<%@include file="relativeURI"%> 在翻译阶段完成。

<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段完成

注意:

<%@ include file=""%>指令在编写代码的时候一般放在最顶部,主要附加的是被重用的代码,这里所说的附加是指把源代码原封不动的附加过来,例如在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含<html><body>这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错。  

而应用<jsp:include page="" flush="" />标签导入一个重用文件的时候,这个文件是经过编译的,通俗点说就是附加这个要导入文件经过编译后的效果,所以可以含有与当前jsp程序中重复的内容,因为在附加过来之前就会被解析掉。

另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释。检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

 

以上是关于JSP 中两种 include 的区别的主要内容,如果未能解决你的问题,请参考以下文章

JAVA里静态的属性怎么在jsp里访问?

jQuery中两种阻止事件冒泡的区别

SQL Server 中两种选择所有列的区别? [复制]

LoadRunner中两种录制模式的区别

jsp页面重用,include 带有css的jsp布局

include的指令和动作的区别