论坛首页 入门技术论坛

jsp:include vs include file

浏览 1594 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-13   最后修改:2009-11-13
参考: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页面实现类以处理每个请求并产生应答

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


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


文章中有些语焉不详之处,经过测试,注意以下几点:
1.include file 引入的页面,其代码原封不动的插在引入的位置,所以jsp中定义的path,basepath只能保留一组,否则会提示重复定义;
jsp:include 引入页面,是在运行时把编译后的结果插入进来,不会出现上述问题。

2.形象一点,include file 好像是把两个页面合并在一起然后同一编译,所以在引入页面有效的request对象,引入之后,仍然能够被宿主jsp访问;
jsp:include则是分开编译,所以request对象无法共享。

3.include file 是静态插入,只在第一次引入时编译一次,如果后来发生了变化,在页面上无法及时的显示出来;
jsp:include是动态引入,jsp容易会监视引入页面的变化,及时将改变反映到页面上来。

可见二者各有所长啊。
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics