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: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中。