include指令称为文件加载指令,可以将其他的文件插入JSP网页,被插入的文件必须保证插入后形成的新文件符合JSP页面的语法规则。
include指令可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。
include指令的语法格式如下
<%@ include file="filenamel"%>
其中,include指令只有一个file属性,filename指被包含的文件的名称,被插入的文件必须与当前JSP页面在同一web服务目录下。功能:该指令标签作用是在该标签的位置处,静态插入一个文件。静态插入是用被插入的文件内容代替该指令标签,与当前JSP文件合并成新的JSP页面。使用JSP的include指令有助于实现JSP页面的模块化。一个页面可以包含多个include指令。
JSPinclude动作在页面得到请求时动态包含一个文件。
jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的 结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面, 将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页 面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。
语法: <jsp:include page="sample.jsp" flush="true"> <jsp:param name="name" value="value"/> </jsp:include>
其中参数设置可以没有,如果没有参数设置,则必须采用<jsp:include page="sample.jsp" flush="true"/>形式
jsp:include动作和include指令之间的根本性的不同在于它们被调用的时间。jsp:include动作在请求期间被激活,而include指令在页面转换期间被激活。
两者之间的差异决定着它们在使用上的区别。使用include指令的页面要比使用jsp:include动作的页面难于维护。使用JSP指令,如果包含的JSP页面发生变化,那么用到这个页面的所有页面都需要手动更新。在JSP服务器的相关规范中并没要求能够检测出包含的文件什么时候发生改变,实际上大多数服务器页都有去实现这种机制。这样就会导致十分严重的维护问题,需要记住所有包含某一个页面的其他页面,或者重新编译所有的页面,以使更改能够生效。在这点上,jsp:include就体现出了十分巨大的优势,它在每次请求时重新把资源包含进来。在实现文件包含上,应该尽可能地使用jsp:include动作。
jsp:include动作直比于include指令在维护上有着明显优势,而include指令仍然能够得以存在,自然在其他方面有特殊的优势。这个优势就是include指令的功能更强大,执行速度也稍快。include指令允许所包含的文件中含有影响主页面的JSP代码,比如响应报送的设置和属性方法的定义