首先
<%@ include file=” ”%>:为指令元素
<jsp:include page=” ” flush=”true”/>:为 动作元素
先说指令元素:
include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。
然后经过两个阶段:
1.将jsp翻译成 servlet
2.servlet 翻译成 .class文件
这样的话,在被引入文件中请不要加入 contentype 的属性 ,因为jsp页面中不能指定多个contentType
动作元素:
它并没有把所要添加的jsp的代码加入到被添加的jsp中
只是在运行时引入了要添加的jsp页面执行后所产生的应答,这意味着我们可以指定任何能够产生应答的Web资源,(例如一个servlet或一个jsp页面),只要这些资源所产生的类型和jsp页面产生的编码类型相同(如果编码类型不同,则会出现乱码).JSP容器将通过一个内部的函数调用来执行指定的资源,因此,这些被引入的资源可以帮 助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象.以及所有原来的请求参数.
如果修改了要添加的jsp页面,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的jsp页面的方式完全相同。即容器检测页面的变化,并自动进入翻译阶段,以得到页面的最新版本。
以下是对include 两种用法的区别,主要有两个方面的不同:
执行时间上:
<%@ include file=” .jsp”%> 是在翻译阶段执行
<jsp:include page=” .jsp” flush=”true” /> 在请求处理阶段执行.
引入内容的不同:
<%@ include file=” .jsp”%>引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<jsp:include page=” .jsp” flush=”true” />引入执行页面或servlet所生成的应答文本.
大家可以参考:http://developer.51cto.com/art/200902/111134.htm