jsp中include的不同用法
動態include用jsp:include動作實現 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數.
靜態INCLUDE用include偽碼實現,定不會檢查所含檔案的變化,適用於包含靜態頁面<%@ include file="included.htm" %>
JSP動態INCLUDE和靜態INCLUDE的使用方法及其區別:
指令元素 <%@ include file=" "%>
行為元素<jsp:include page=" " flush="true"/>
應用時機:當應用程式中所有的頁面的某些部分(例如標題、頁尾和導航欄)都相同的時候,
<%@ include file=" "%>,jsp的include指令元素讀入指定頁面的內容.並把這些內容和原來的頁面融合到一起.
(這個過程是在翻譯階段:也就是jsp被轉化成servlet的階段進行的)翻譯階段:我們知道,jsp頁面不能原封不動地被傳送給瀏覽器,所有的jsp元素都必須首先由伺服器進行處理.這是通過將jsp頁面轉達化成servlet,然後執行這個servlet來完成的.伺服器需要一個jsp容器來處理jsp頁面.jsp容器通常以servlet的形式來實現,這個servlet經過配置,可以處理對jsp頁面的所有請求.Jsp容器負責將jsp頁面轉化成servlet(稱為jsp頁面實現類?JSP Page implementation class),並編譯這個servlet.這兩步就構成了翻譯階段.
由此:jsp頁面是把include指令元素所指定的頁面的實際內容(也就是程式碼段)加入到引入它的jsp頁面中,合成一個檔案後被jsp容器將它轉化成servlet.可以看到這時會產生一個臨時class檔案和一個java檔案.
主要有兩個方面的不同;
一:執行時間上:
<%@ include file="relativeURI"%> 是在翻譯階段執行
<jsp:include page="relativeURI" flush="true" /> 在請求處理階段執行.
二:引入內容的不同:
1. <%@ include file="relativeURI"%>
引入靜態文字(html,jsp),在JSP頁面被轉化成servlet之前和它融和到一起.
2. <jsp:include page="relativeURI" flush="true" />引入執行頁面或servlet所生成的應答文字.
另外在兩種用法中file和page屬性都被解釋為一個相對的URI.如果它以斜槓開頭,那麼它就是一個環境相關的路徑.將根據賦給應用程式的URI的字首進行解釋,如果它不是以斜槓開頭,那麼就是頁面相關的路徑,就根據引入這個檔案的頁面所在的路徑進行解釋.