日期:2014-05-16  浏览次数:20466 次

@include file的路径问题 以及与< jsp:include page=""/>区别

?????? include的file属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释。

?

?????? jpsf文件默认放在WEB-INF/jspf/下,在二级目录下调用jspf文件有以下两种方式:

?

?????? <%@ include file="/WEB-INF/jspf/HeaderPage.jspf" %>

???????或者

???????<%@ include file="../WEB-INF/jspf/HeaderPage.jspf"%>

?

?

然后说说< %@ include file=""%>与< jsp:include page=""/>区别

?

??????两者最重要的区别:JSP指令< %@ include file=”"%>,是将被引入的JSP与原JSP融合到一起,而这个融合过程是在翻译阶段进行的。

?????jsp页面是把include指令元素(< %@ include file=”"%>)所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个servlet源文件。而动作元素(< jsp:include page=""/>)是在请求处理阶段引入的,会被JSP容器生成两个临时class文件和两个servlet原文件。而引入的只是servlet的输出结果,即JspWriter对象的输出结果,而不是jsp的源代码。

?

总结两种include 两种用法的区别,主要有两个方面的不同:
一、执行时间上:
? ? ?<%@ include file=”relativeURI”%> 是在翻译阶段执行
? ? ?<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行。
二、引入内容的不同:
? ? ? <%@ include file=”relativeURI”%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。
? ? ? <jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本。