20080823-jsp中include指令与动作的不同
?一、include 指令
格式:
<%@include file="文件的絕對(duì)路徑或者相對(duì)路徑"%>?
?
file屬性:指定被包含的文件,是必添屬性。該屬性不支持任何表達(dá)式,也不允許通過(guò)如下方式來(lái)傳遞參數(shù)。
<%@include file="welcome.jsp?name=mr"%>?
?
如果路徑以“/”開(kāi)頭,那么指定的是一個(gè)絕對(duì)路徑,將在當(dāng)前應(yīng)用的根目錄下查找文件,如果是以文件名或文件夾名開(kāi)頭,那么指定的是一個(gè)相對(duì)路徑,將在當(dāng)前應(yīng)用的根目錄下查找文件。
?
二、include動(dòng)作
格式:
<jsp:include page="被包含文件的路徑" flush="true/false"> <jsp:param name="參數(shù)名稱" value="參數(shù)值"/> </jsp:inclue>?
?
page屬性:該屬性指定了被包含文件的路徑,其值可以是一個(gè)代表了相對(duì)路徑的表達(dá)式.當(dāng)路徑以"/"開(kāi)頭時(shí),則按照當(dāng)前應(yīng)用的路徑查找這個(gè)文件,如果路徑是以文件名或者目錄名稱開(kāi)頭,那么將按照當(dāng)前的路徑來(lái)查找被包含的文件,
flush屬性:表示當(dāng)輸出緩沖區(qū)滿時(shí),是否清空緩沖區(qū).
?
三、兩者的不同
1、從屬性方面進(jìn)行區(qū)分
include 指令通過(guò)file屬性來(lái)指定被包含的頁(yè)面,include指令將file屬性看作一個(gè)實(shí)際存在的文件的路徑。所以該屬性不支持任何表達(dá)式,也不支持在struts應(yīng)用中的請(qǐng)求模式(如*.do),若在file屬性值中應(yīng)用JSP表達(dá)式,會(huì)拋出異
常,如下面的代碼:
<% String path="login.jsp"%> <%@inclue file="<%=path%>"%>
?
?include動(dòng)作標(biāo)識(shí)通過(guò)page屬性來(lái)指定被包含的頁(yè)面,該屬性支持JSP表達(dá)式和Struts 應(yīng)用在的請(qǐng)求模式
2、從處理方式方面進(jìn)行區(qū)分
?
使用include指令,被包含的文件為原封不動(dòng)的插入到包含頁(yè)中使用該指令的位置,然后JSP編譯器再對(duì)這個(gè)合成的文件進(jìn)行編譯,所以在一個(gè)JSP頁(yè)面中使用include指令來(lái)包含另外一個(gè)JSP頁(yè)面,最終編譯后的文件只有一個(gè)。
?
使用include 動(dòng)作標(biāo)識(shí)包含文件時(shí),當(dāng)該標(biāo)識(shí)執(zhí)行時(shí),程序會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到(注意是轉(zhuǎn)發(fā)而不是重定向)被包含的頁(yè),并將執(zhí)行結(jié)果輸出到瀏覽器中,然后返回包含頁(yè)繼續(xù)執(zhí)行后面的代碼,因?yàn)榉?wù)器執(zhí)行的是兩個(gè)文件。所以JSP編
譯器會(huì)分別對(duì)這兩個(gè)文件進(jìn)行編譯。
3、從包含方式方面進(jìn)行區(qū)分
?
使用include指令包含文件,最終服務(wù)器執(zhí)行的是將兩個(gè)文件合成后由JSP編譯器編譯成一個(gè)Class 文件,所以被包含的文件的內(nèi)容是固定不變的,若改變了被包含的文件,則主文件的代碼就發(fā)生了變化,因此服務(wù)器會(huì)重新編譯主文件
,include指令的這種包含稱為靜態(tài)包含
?
使用include動(dòng)作標(biāo)識(shí)通常是包含那些經(jīng)常需要改動(dòng)的文件,此時(shí)服務(wù)器執(zhí)行的是兩個(gè)文件,被包含的文件改變不會(huì)影響到主文件,因此服務(wù)器不會(huì)對(duì)主文件重新編譯,而只需要重新編譯被包含的文件即可,而對(duì)被包含文件的編譯是在執(zhí)
行時(shí)才進(jìn)行的,也就是說(shuō),只有當(dāng)include動(dòng)作被執(zhí)行時(shí),使用該標(biāo)識(shí)包含的目標(biāo)文件才會(huì)被編譯,否則被包含的文件不會(huì)被編譯,所以這種包含過(guò)程稱為動(dòng)態(tài)包含。
4、從被包含文件的約定方面進(jìn)行區(qū)分
JSP有一些標(biāo)識(shí)符例如
<%@page contentType="text/html;charset=gb2312"%>?
?
在一個(gè)JSP頁(yè)面中只能出現(xiàn)一次,這個(gè)時(shí)間用jsp動(dòng)作包含一個(gè)文件時(shí),包含頁(yè)與被包含頁(yè)面只能有一個(gè)文件有此標(biāo)識(shí),而include 標(biāo)作沒(méi)有此限制。
總結(jié)
以上是生活随笔為你收集整理的20080823-jsp中include指令与动作的不同的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 20080803
- 下一篇: 20080904--判断表单中的元素值是