欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jsp:include vs include file

程序员文章站 2024-03-20 20:39:58
...
参考: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容易会监视引入页面的变化,及时将改变反映到页面上来。

可见二者各有所长啊。
相关标签: JSP Java Servlet