標籤:htm 首頁 request 產生 產生 isp 效能 變數 color
include指令是編譯階段的指令,即include所包括的檔案的內容是編譯的時候插入到JSP檔案裡,JSP引擎在推斷JSP頁面未被改動,否則視為已被改動。
因為被包括的檔案是在編譯時間才插入的。因此假設僅僅改動了include檔案內容。而沒有對JSP改動,得到的結構將不會改變,所以直接運行已經存在的位元組碼檔案。而沒有又一次編譯。因此對不常常變化的內容,用include指令是合適的,假設須要的內容是常常變化的。則須要動作元素<jsp:include>.以下將具體區分他們之間的不同
1.include指令
include能夠在JSP頁面轉換成Servlet之前,將JSP代碼插入當中。
它的主要長處是功能強大。所包括的代碼能夠含有整體上影響首頁面的JSP構造,比方屬性、方法的定義和文件類型的設定。它的缺點是難於維護僅僅要被包括的頁面發生更改,就得更改首頁面,這是由於首頁面不會自己主動地查看被包括的頁面是否發生更改。
文法:<%@ include file="sample.jsp" %>
2.include動作
jsp:include動作是在首頁面被請求時,將次級頁面的輸出包括進來。雖然被包括的頁面的輸出中不能含有JSP,但這些頁面能夠是其它資源所產生的 結果。
server依照正常的方式對指向被包括資源的URL進行解釋。因而這個URL能夠是Servlet或JSP頁面。server以通常的方式執行被包括的頁面。 將產生的輸出放到首頁面中,這樣的方式與RequestDispatcher類的include方法一致。
它的長處是在被包括的頁面發生更改時,無須對首頁 面做出改動。它的缺點是所包括的是次級頁面的輸出,而非次級頁面的實際代碼,所以在被包括的頁面中不能使用不論什麼有可能在總體上影響首頁面的JSP構造。
文法: <jsp:include page="sample.jsp" flush="true"> <jsp:param name="name" value="value"/> </jsp:include>
當中參數設定能夠沒有,假設沒有參數設定,則必須採用<jsp:include page="sample.jsp" flush="true"/>形式
主要有兩個方面的不同;
一:已耗用時間上:
<%@ include file=”relativeURI”%> 是在翻譯階段運行
<jsp:include page=”relativeURI” flush=”true” /> 在請求處理階段運行.
二:引入內容的不同:
<%@ include file=”relativeURI”%>
引入靜態文本(html,jsp),在JSP頁面被轉化成servlet之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入運行頁面或servlet所產生的應答文本.
三: 使用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。
[JSP]JSP中include指令和include動作的差別