jsp:include 在首頁面北請求期間將其他頁面的輸出包含進來(動態包含)
include指令 不同與上一條,在首頁面轉化成servlet之前將jsp代碼插入進來(靜態包含)
jsp:plugin 適用於applet
最愚蠢的方式是在多個頁面有共用部分時使用複製張貼的方式,其次採用不同伺服器提供的包含機制,最好使用上面3條可移植的方式。
在請求期間包含頁面jsp:include
1、可以包含這些內容:HTML頁面的內容,純文字文檔內容,JSP頁面的輸出,servlet的輸出。==RequestDispatcher的include方法。
2、文法:<jsp:include page="relative-path-to-resource" />這裡的路徑可以使用相對與首頁面的路徑(不加/),相對與應用的根目錄(加/),為了防止用戶端的非法訪問,最 好將被包含頁面放在WEB-INF目錄。 其中可加flush屬性,指定在將那個頁麵包含進來之前是否應該清空首頁面的輸出資料流(預設false)。
3、增加請求參數:被包含頁面可以的request對象和首頁面共用,不過可在首頁面中給北包含頁面單獨配置一些參數,文法如下:
<jsp:include page="/framents/StandardHeading.jsp">
<jsp:param name="bgColor" value="Yellow" />
</jsp:include>
如果新增參數和用戶端提交參數重名,優先使用新增參數。
在頁面轉換期間包含檔案 : include指令 兩個jsp頁麵包含方式比較
|
jsp:include動作 |
include指令 |
包含動作的發生時間 |
請求期間 |
頁面轉化期間
|
包含的內容 |
頁面的輸出 |
檔案的實際內容 |
產生多少servlet |
兩個(首頁面和北包含頁面都會有獨立的servlet) |
一個(北包含檔案首先被插入到首頁面中,然後,得到的頁面北轉換成servlet) |
被包含頁面是否可設定首頁面的響應前序 |
不可以 |
可以 |
被包含頁面是否可定義首頁面的欄位或方法 |
不可以 |
可以 |
被包含頁面發生更改時是否需要更新首頁面 |
不需要 |
需要 |
等同的servlet代碼 |
RequestDispatcher的include方法 |
沒有 |
相關的規範只要求首頁面什麼時候發生了改變,並動態更新,所以include指令的方法需要手動touch(在linux系統上)首頁面或者在首頁面維護一個代表更新時間的注釋,顯式讓伺服器更新,而jsp:include方法會自動檢測並更新jsp的編譯成的servlet。
當然,includ指令,<% include file="……" %>XML相容語句是:<jsp:directive.include file="……" />。
使用jsp:forward轉寄請求效果和使用servlet的RequestDispatcher的forward方法一樣,不過這種邏輯處理一般建議放在servlet中。