include指令表示在JSP编译时插入一个包含文本或者代码的文件,把文件中的文本静态地包含过去。也就是说,会把被包含的页面拷贝到包含的页面中指令所在的位置。
语法格式:<%@ include file="relativeURL"%>
relativeURL为包含进来的文件路径,可以是HTML,JSP文件,也可以是其他格式的文本文件。
include在实际开发中到底有什么作用?
我们知道,在进行大型项目开发的时候,应尽量把各个组件模块化,JSP也是如此。例如,每个JSP页面中都有一个导航栏,那么我们就可以把这个导航栏写成一个公共的navi.jsp。然后在其他的页面中只要引入这个导航栏就行了。
使用include指令注意两点:
1、被包含文件中不能再使用<html><body></html></body>的标签,否则会与包含页面中的标签重复;
2、被包含文件的路径不能写成动态的,如:<%@ include file="<%=xxx%>"%>;
3、被包含文件的路径中不能携带参数,如:<%@ include file="navi.jsp?flag=1"%>。
<jsp:include>实现的是动态包含,它把显示的结果插入到当前页面来显示。
语法格式:<jsp:include page="relativeURL" flush="true"/>
page表示一个相对路劲,可以是静态文件名,也可以是计算出来的动态相对路径值。
flush表示为真时,当缓冲区满会自动清空。这个属性石必须属性,而且值必须为true。
include指令和include动作指令的区别
1、动态include用jsp:include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面。并且可以带参数。而静态include用include指令实现,它不会检查所含文件的变化,适用于包含静态页面。
2、动态include和静态include根本性的不同在于它们被调用的时间。动态include在请求期间被激活,而静态include在页面转换期间被激活。
3、动态include先编译后执行;静态include不编译。
4、静态include只能生成一个servlet,动态include可以生成多个servlet。
5、静态include做出的任何修改必须重启当前的web服务才能生效,动态include保存即生效。
6、静态include不能实现在请求区间内共享对象,而动态include支持。