Include动作与Include指令的区别对比
--------------------------------------------------------------------------------
include 动作 include 指令
语法 <jsp:include page="..."> <%@ include file="..."%>
包含动作的发生时间 请求期间 页面转换期间
包含的内容 页面的输出 文件的实际内容
产生多少个 servlet 两个 ( 主页面和次级页面都会成为独立的 servlet ) 一个 ( 次级页面首先被插入到主页面中,然后得到的页面被转换成 servlet )
被包含的页面中可否设置影响主页面的响应报头 不可以 可以
被包含的页面中可否定义主页面使用的字段或方法 不可以 可以
被包含的页面发生更改时是否需要更新主页面 不需要 需要
等同的 servlet 代码 RequestDispatcher 的 include 方法 没有
include动作与inclue指令优缺点
include动作 <jsp:include page="" /> 它允许我们在请求期间将其他页面的输出包含进来
优点:在被包含的页面作出更改时,无须对主页面作出更改。
缺点:它所包含的是次页面的输出,而非次页面的实际代码。
所以在被包含的次级页面中不能使用任何有可能总体上影响主页面的jsp构造。
它的优点远远胜过它的缺点,这几乎注定它会比其他包含机制应用的更为普遍。
include指令 <%@ include file="" %> 它可以在主页面转换成servlet之前,将jsp代码插入其中。
优点:功能强大,所包含的代码可以含有总体上影响主页面的jsp构造,例如字段的定义和内容类型的设定。
缺点:难以维护,只要被包含的页面发生更改就要更新主页面。
--------------------------------------------------------------------------------
使用include动作还是include指令?
使用include指令,如果被包含的文件发生改变,那么,用到它的所有Jsp页面都需要更新。
仅当include动作不能满足要求时,我们才应该使用include指令。
有些开发人员认为include指令生成的代码执行起来比使用include动作的代码更快。尽管原则上由可能的确如此,但性能上的差异很小,以致难以测量,同时,include动作在维护上的优势十分巨大,当两种方法都可以使用时,include动作几乎肯定是首选的方法。
对于文件包含,应该尽可能地使用include动作。
仅在所包含的文件中定义了主页面要用到的字段或方法,或所包含的文件设置了主页面的响应报头时,才应该使用include指令。
既然include指令产生难以维护的代码,为什么人们还要使用它呢?
因为include指令更为强大。include指令允许所包含的文件中含有影响主页面的Jsp代码,比如响应报头的设置和字段、方法的定义。
例如:
subpage.jsp
<%! int num=0; %>mainpage.jsp
<html>
<body>
<%@ include file="subpage.jsp" %>
<%= num %>
</body>
</html>当然使用include动作时这是不可能的,因为num变量未定义,主页面不能成功的转换成servlet |