jspf、jsp小记

1、jspf与jsp

<jsp:include page="xx.jspf" flush="true">

<jsp:param name="counterId" value="${counterId}"/>
</jsp:include>
用jsp动态包含这个jspf文件后页面显示的内容是没有编译直接把源码包含进来了。
问题分析:
jspf并不是像jsp一样是JSP Servlet的默认的扩展名(Tomcat 5.0.28/Servlet 2.4/JSP 2.0),用jsp动态包含后jsp引擎不会把他当做jsp文件来编译,如果使用tomcat,需求在tomcat下的web.xml中加入一个
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspf</url-pattern>
</servlet-mapping>
让jspf扩展名同样成为JSP Servlet处理的文件。
如果使用resin,需要在resin中的resin.conf中<servlet-mapping url-pattern='*.jspf' servlet-name='jsp'/>
这样用jsp动态包含后jsp引擎才会把他当做jsp文件来编译。但如果用静态包含(@include)则不用做如上配置可以编译,为什么静态包含文件则可以呢,具体原因可以参见jsp的动态包含和静态包含文件的区别: http://blog.csdn.net/itautomn/article/details/1635726

注意点:不建议无端引进jspf类型文件进来,因为编辑jspf类型文件上的java代码没有jsp打点提示,不方便维护,同时引入jspf类型文件也没有什么好处反而增加了配置的复杂,当然引入jspf组件(记得有个jspf.jar)另议,因为此jspf非彼jspf。


2、<%@include...> 与<jsp:include....>指令的区别

include指令:

在翻译阶段(将JSP页面转换成servlet的阶段),JSP的include指令会读入指定的页面中的内容,并将这些内容和原来的页面融合在一起。
   <%@ include file=”header.html”%>
 引入的页面可以只包含静态内容(例如HTML),也可以是一个普通的JSP页面。主页面和引入的页面融和在一起(引入的页面只是最为普通的文本进行融合,并不对动态内容求值),融合后的完整页面再被整体的转换为一个servlet。
 这意味着主页和被引入的页面共享所有的页面作用域数据。因此,如果主页面中声明了一个变量,而在某个被引入的页面中也声明了一个同名的变量,那么在翻译阶段将会造成一个错误,因为组合后的页面无法进行编译。
 include指令的一个常见用法是引入应用程序的所有页面都需要的公共声明。
 JSP规范建议在使用include指令引入JSP页面时,最好使用不同的文件扩展名,因为它们一般都不是完整而合法的页面,如:可以使用这些替代的文件扩展名:.jspf或 .jsf。
 被引用页面改变后,容器可能不会马上产生反应。


 <jsp:include>指令用于在运行时引入另外的资源。

 <jsp:include page=”navigation.jsp”/>
 这个指令是在请求处理阶段而不是在翻译阶段执行的。该行为并不是要引入指定页面的实际内容,它将引入执行该引入页面后所产生的应答,这意味着你可以指定任何能够产生文本应答的web资源。JSP容器将通过一个内部的函数调用来调用指定的资源。因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象,以及所有的请求参数。但是要注意,它不能访问任何页面作用域属性,或是在主页面中声明的脚步变量。
 <c:import>行为和<jsp:include>相同,另外它还可以从外部资源引入数据,比如不同的web应用程序,或者一个FTPfuwq。
  所以应该使用<c:import>来代替<jsp:include>的使用。
  被引用页面改变后,新版本会立即投入使用。
  include 和<jsp:include>行为直接的区别 。语法-执行时间-引入的内容
<%@ include  File=”relativeURI”%>     翻译阶段     静态文本(HTML、JSP),在JSP页面被转换为servlet之前和他融合在一起
  <jsp:include Page=”relativeURI”Flush=”true/false”/>    请求处理阶段     执行页面或servlet所生成的应答文本
 
 个人理解:<%@ include file%>是把引入的文件和当前的文件共同合斌成一个servlet文件进行解析。<JSP:include page>是把当前文件和引入文件生成两个不同的servlet文件,在当前文件中在进行动态的调用引入的servlet文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值