和<%@ include file%>的區別


<%@include...> 與<jsp:include....>指令的區別

include指令:

在翻譯階段(將JSP頁面轉換成servlet的階段),include會讀入指定的頁面中的內容,並將這些內容和原來的頁面融合在一起
   <%@ include file=”header.html”%>
 引入的頁面可以只包含靜態內容(例如HTML),也可以是一個普通的JSP頁面。主頁面和引入的頁面融和在一起(引入的頁面只是最為普通的文本進行融合,並不對動態內容求值),融合后的完整頁面再被整體的轉換為一個servlet。
 這意味着主頁和被引入的頁面共享所有的頁面作用域數據。因此,如果主頁面中聲明了一個變量,而在某個被引入的頁面中也聲明了一個同名的變量,那么在翻譯階段將會造成一個錯誤,因為組合后的頁面無法進行編譯。


 include指令的一個常見用法是引入應用程序的所有頁面都需要的公共聲明。
 JSP規范建議在使用include指令引入JSP頁面時,最好使用不同的文件擴展名,因為它們一般都不是完整而合法的頁面,如:可以使用這些替代的文件擴展名:.jspf或 .jsf。
 被引用頁面改變后,容器可能不會馬上產生反應。


 <jsp:include>

  指令用於在運行時引入另外的資源。

  <jsp:include page=”navigation.jsp”/>
   這個指令是在請求處理階段而不是在翻譯階段執行的。該行為並不是要引入指定頁面的實際內容,它將引入執行該引入頁面后所產生的應答,這意味着你可以指定任何能夠產生文本應答的web資源。JSP容器將通過一個內部的函數調用來調用指定的資源。因此,這些被引入的資源可以幫助處理原來的請求,所以這些資源可以訪問請求作用域內的所有對象,以及所有的請求參數。但是要注意,它不能訪問任何頁面作用域屬性,或是在主頁面中聲明的腳本變量。
   <c:import>行為和<jsp:include>相同,另外它還可以從外部資源引入數據,比如不同的web應用程序,或者一個FTPfuwq。
    所以應該使用<c:import>來代替<jsp:include>的使用。
    被引用頁面改變后,新版本會立即投入使用。


  include 和<jsp:include>行為直接的區別   

 

語法 執行時間 引入內容
<%@ include  File=”relativeURI”%> 翻譯階段 靜態文本(HTML、JSP),在JSP頁面被轉換為servlet之前和他融合在一起
<jsp:include Page=”relativeURI”Flush=”true/false”/> 請求處理階段 執行頁面或servlet所生成的應答文本


         
      
總結:<%@ include file%>是把引入的文件和當前的文件共同合斌成一個servlet文件進行解析。<JSP:include page>是把當前文件和引入文件生成兩個不同的servlet文件,在當前文件中在進行動態的調用引入的servlet文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM