72 include动作和指令的区别
<%@include...> 與<jsp:include....>指令的區(qū)別
include指令:
在翻譯階段(將JSP頁面轉(zhuǎn)換成servlet的階段),include會讀入指定的頁面中的內(nèi)容,并將這些內(nèi)容和原來的頁面融合在一起
?? <%@ include file=”header.html”%>
引入的頁面可以只包含靜態(tài)內(nèi)容(例如HTML),也可以是一個普通的JSP頁面。主頁面和引入的頁面融和在一起(引入的頁面只是最為普通的文本進(jìn)行融合,并不對動態(tài)內(nèi)容求值),融合后的完整頁面再被整體的轉(zhuǎn)換為一個servlet。
這意味著主頁和被引入的頁面共享所有的頁面作用域數(shù)據(jù)。因此,如果主頁面中聲明了一個變量,而在某個被引入的頁面中也聲明了一個同名的變量,那么在翻譯階段將會造成一個錯誤,因?yàn)榻M合后的頁面無法進(jìn)行編譯。
include指令的一個常見用法是引入應(yīng)用程序的所有頁面都需要的公共聲明。
JSP規(guī)范建議在使用include指令引入JSP頁面時,最好使用不同的文件擴(kuò)展名,因?yàn)樗鼈円话愣疾皇峭暾戏ǖ捻撁?#xff0c;如:可以使用這些替代的文件擴(kuò)展名:.jspf或 .jsf。
被引用頁面改變后,容器可能不會馬上產(chǎn)生反應(yīng)。
<jsp:include>
指令用于在運(yùn)行時引入另外的資源。
<jsp:include page=”navigation.jsp”/>
這個指令是在請求處理階段而不是在翻譯階段執(zhí)行的。該行為并不是要引入指定頁面的實(shí)際內(nèi)容,它將引入執(zhí)行該引入頁面后所產(chǎn)生的應(yīng)答,這意味著你可以指定任何能夠產(chǎn)生文本應(yīng)答的web資源。JSP容器將通過一個內(nèi)部的函數(shù)調(diào)用來調(diào)用指定的資源。因此,這些被引入的資源可以幫助處理原來的請求,所以這些資源可以訪問請求作用域內(nèi)的所有對象,以及所有的請求參數(shù)。但是要注意,它不能訪問任何頁面作用域?qū)傩?#xff0c;或是在主頁面中聲明的腳本變量。
<c:import>行為和<jsp:include>相同,另外它還可以從外部資源引入數(shù)據(jù),比如不同的web應(yīng)用程序,或者一個FTPfuwq。
? 所以應(yīng)該使用<c:import>來代替<jsp:include>的使用。
? 被引用頁面改變后,新版本會立即投入使用。
? include 和<jsp:include>行為直接的區(qū)別
?
語法 ?? ?執(zhí)行時間 ?? ?引入內(nèi)容
<%@ include? File=”relativeURI”%> ?? ?翻譯階段 ?? ?靜態(tài)文本(HTML、JSP),在JSP頁面被轉(zhuǎn)換為servlet之前和他融合在一起
<jsp:include Page=”relativeURI”Flush=”true/false”/> ?? ?請求處理階段 ?? ?執(zhí)行頁面或servlet所生成的應(yīng)答文本
???????? ?
總結(jié):<%@ include file%>是把引入的文件和當(dāng)前的文件共同合斌成一個servlet文件進(jìn)行解析。<JSP:include page>是把當(dāng)前文件和引入文件生成兩個不同的servlet文件,在當(dāng)前文件中在進(jìn)行動態(tài)的調(diào)用引入的servlet文件。
?
總結(jié)
以上是生活随笔為你收集整理的72 include动作和指令的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础:序列(列表、元组、字符
- 下一篇: java学习(18):巩固练习