动态include用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数.
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
JSP动态INCLUDE和静态INCLUDE的使用方法及其区别:
指令元素 <%@ include file=" "%>
行为元素 <jsp:include page=" " flush="true"/>
应用时机:当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,
<%@ 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" /> 在请求处理阶段执行.
二:引入内容的不同:
1. <%@ include file="relativeURI"%>
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
2. <jsp:include page="relativeURI" flush="true" />引入执行页面或servlet所生成的应答文本.
另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.