转: jsp:include vs include file

---------------http://www.javaeye.com/topic/516737

 

参考:http://developer.51cto.com/art/200902/111134.htm

简单总结一下:

准备知识:
1.翻译阶段
jsp容器负责将jsp页面转化成servlet(*.jsp-->*_jsp.java.称为jsp页面实现类:JSP Page implementation class),并编译这个servlet(*_jsp.java-->*_jsp.class)
2.请求处理阶段
调用jsp页面实现类以处理每个请求并产生应答

Java代码 复制代码
  1. <%@ include file="*.jsp" %>   
  2. 引入的jsp在宿主jsp的翻译阶段,与宿主jsp合成了一个*_jsp.java文件;   
  3. 此时宿主jsp还未编译。  
<%@ include file="*.jsp" %>
引入的jsp在宿主jsp的翻译阶段,与宿主jsp合成了一个*_jsp.java文件;
此时宿主jsp还未编译。


Java代码 复制代码
  1. <jsp:include page="" flush="true"/>   
  2. 引入的jsp与宿主jsp分开翻译,转化成两个不同的*_jsp.java文件;   
  3. 直到宿主jsp编译后运行时,才会引入。  
<jsp:include page="" flush="true"/>
引入的jsp与宿主jsp分开翻译,转化成两个不同的*_jsp.java文件;
直到宿主jsp编译后运行时,才会引入。



文章中有些语焉不详之处,经过测试,注意以下几点:

Java代码 复制代码
  1. 1.include file 引入的页面,其代码原封不动的插在引入的位置,所以jsp中定义的path,basepath只能保留一组,否则会提示重复定义;   
  2. jsp:include 引入页面,是在运行时把编译后的结果插入进来,不会出现上述问题。   
  3.   
  4. 2.形象一点,include file 好像是把两个页面合并在一起然后同一编译,所以在引入页面有效的request对象,引入之后,仍然能够被宿主jsp访问;   
  5. jsp:include则是分开编译,所以request对象无法共享。   
  6.   
  7. 3.include file 是静态插入,只在第一次引入时编译一次,如果后来发生了变化,在页面上无法及时的显示出来;   
  8. jsp:include是动态引入,jsp容易会监视引入页面的变化,及时将改变反映到页面上来。   
  9.   
  10. 可见二者各有所长啊。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值