1.include指令
include可以在jsp頁面轉換成servlet之前,將jsp**插入其中。它的主要優點是功能強大,所包含的**可以含有總體上影響主頁面的jsp構造,比如屬性、方法的定義和文件型別的設定。它的缺點是難於維護只要被包含的頁面發生更改,就得更改主頁面,這是因為主頁面不會自動地檢視被包含的頁面是否發生更改。
include指令的語法格式如下
<%@ include file="relative url"%>
2.include動作
jsp:include動作是在主頁面被請求時,將次級頁面的輸出包含進來。儘管被包含的頁面的輸出中不能含有jsp,但這些頁面可以是其他資源所產生的結果。伺服器按照正常的方式對指向被包含資源的url進行解釋,因而這個url可以是servlet或jsp頁面。伺服器以通常的方式執行被包含的頁面,將產生的輸出放到主頁面中,這種方式與requestdispatcher類的include方法一致。它的優點是在被包含的頁面發生更改時,無須對主頁面做出修改。它的缺點是所包含的是次級頁面的輸出,而非次級頁面的實際**,所以在被包含的頁面中不能使用任何有可能在整體上影響主頁面的jsp構造。
jsp:include動作的完整語法如下
其中jsp:include之間不能有空格,page屬性指定被包含的頁面,這個屬性是必需的,是指向某種資源的相對url。如果這個相對url不是以/開頭,則將其解釋為相對於主頁面的路徑;如果是以/開頭,是這個url被解釋為相對於當前web應用的根目錄,而不是伺服器的根目錄,這是因為該url是由伺服器來解釋的,不是由使用者的瀏覽器來解釋的。像下面這行**,是由使用者的瀏覽器進行解釋的,因此會按照相對於伺服器的根目錄進行解釋。
flush屬性是乙個可選的次級屬性,預設值為false,它指定在將頁面包含進來之前是否應該清空主頁面的輸出流。
注意:在jsp1.1中,flush是必需的屬性,而且聚會只能是true。
3.兩者的區別和比較
jsp:include動作和include指令之間的根本性的不同在於它們被呼叫的時間。jsp:include動作在請求期間被啟用,而include指令在頁面轉換期間被啟用。
兩者之間的差異決定著它們在使用上的區別。使用include指令的頁面要比使用jsp:include動作的頁面難於維護。前面已經說過,使用jsp指令,如果包含的jsp頁面發生變化,那麼用到這個頁面的所有頁面都需要手動更新。在jsp伺服器的相關規範中並沒要求能夠檢測出包含的檔案什麼時候發生改變,實際上大多數伺服器頁都有去實現這種機制。這樣就會導致十分嚴重的維護問題,需要記住所有包含某乙個頁面的其他頁面,或者重新編譯所有的頁面,以使更改能夠生效。在這點上,jsp:include就體現出了十分巨大的優勢,它在每次請求時重新把資源包含進來。在實現檔案包含上,應該盡可能地使用jsp:include動作。
jsp:include動作直比於include指令在維護上有著明顯優勢,而include指令仍然能夠得以存在,自然在其他方面有特殊的優勢。這個優勢就是include指令的功能更強大,執行速度也稍快。include指令允許所包含的檔案中含有影響主頁面的jsp**,比如響應報送的設定和屬性方法的定義
include指令和include動作的區別
include指令指的是jsp的一種指令標記,語法 而include動作指的是jsp的一種動作標記,語法 或 param子標記 這兩種區別如下 1.include指令執行時將被匯入頁面的jsp 完全融入,兩個頁面融合成乙個servlet 而include動作則在servlet中使用include方法...
include的指令和include動作的區別
nclude指令是編譯階段的指令,即include所包含的檔案的內容是編譯的時候插入到jsp檔案中,jsp引擎在判斷jsp頁面未被修改,否則視為已被修改。由於被包含的檔案是在編譯時才插入的,因此如果只修改了include檔案內容,而沒有對jsp修改,得到的結構將不會改變,所以直接執行已經存在的位元組...
include指令和include動作的區別
include file 為指令元素 jsp include page flush true 為 動作元素 include指令元素讀入指定頁面的內容。並把這些內容和原來的頁面融合到一起。然後經過兩個階段 1.將jsp翻譯成 servlet 2.servlet 翻譯成 class檔案 include動...