jsp:include动作和include指令之间的根本性的不同在于它们被调用的时间。jsp:include动作在请求期间被激活,而include指令在页面转换期间被激活。
两者之间的差异决定着它们在使用上的区别。使用include指令的页面要比使用jsp:include动作的页面难于维护。前面已经说过,使用JSP指令,如果包含的JSP页面发生变化,那么用到这个页面的所有页面都需要手动更新。在JSP服务器的相关规范中并没要求能够检测出包含的文件什么时候发生改变,实际上大多数服务器页都有去实现这种机制。这样就会导致十分严重的维护问题,需要记住所有包含某一个页面的其他页面,或者重新编译所有的页面,以使更改能够生效。在这点上,jsp:include就体现出了十分巨大的优势,它在每次请求时重新把资源包含进来。在实现文件包含上,应该尽可能地使用jsp:include动作。 jsp:include动作直比于include指令在维护上有着明显优势,而include指令仍然能够得以存在,自然在其他方面有特殊的优势。这个优势就是include指令的功能更强大,执行速度也稍快。include指令允许所包含的文件中含有影响主页面的JSP代码,比如响应报送的设置和属性方法的定义。以下表格就是两种包含方式的对比:
include指令
jsp:include动作
语法格式
<%@ include file=”..”%>
<jsp:include page=”..”>
发生作用的时间
页面转换期间
请求期间
包含的内容
文件的实际内容
页面的输出
转换成的Servlet
主页面和包含页面转换为一个Servlet
主页面和包含页面转换为独立的Servlet
影响主页面
可以
不可以
include指令
jsp:include动作
发生更改时是否需要显式更改主页面
需要
不需要
编译时间
较慢-资源必须被解析
较快
执行时间
稍快
较慢-每次资源必须被解析
灵活性
较差-页面名称固定
更好-页面可以动态指定
了解到jsp:include动作和include指令各自的功能和区别,在使用时,就可以通过考虑各方面的因素,来决定使用哪一种方式。尽管各自都有一定的优缺点,在实际使用中,还是应优先考虑使用jsp:include动作,这是因为它在代码维护上的优势远胜过其在功能上的不足。 |
jsp:include与include的区别
最新推荐文章于 2019-08-21 18:38:40 发布