jsp中include有兩種寫法, 都是包含一個頁面或者一個文件的意思, 寫法略有不同
<jsp:include page = "url" />或者<jsp:include page = "url">子動作標識<jsp:param></jsp:include>(什么是子動作標識<jsp:param>)
還有一種是
<%@include file="path" %>
相對來講, 后者要簡單一點, 后者屬於一個include指令元素, 並且只有一個file的屬性, 只是寫上路徑就行了, 路徑可以是相對路徑也可以是絕對路徑, 但不能是<%=...%>代表的表達式
而前者是行為元素。
這兩者的主要的區別在於
1:指令的包含是先將代碼拿過來, 然后與自己的代碼一起編譯顯示, 動作包含的過程是先將代碼編譯, 然后將編譯好的內容放到自己的頁面中去
2:動作的包含, page-支持表達式, 指令的包含, file-不支持表達式
3:執行時間上:
<%@ include file="..."%>速度會快一些, 這個是請求一個頁面
<jsp:include page="..." />相對來講會慢, 這個相當於請求兩個頁面
二:引入內容的不同:
<%@ include file="..."%>
引入靜態文本(html,jsp),在JSP頁面被轉化成servlet之前和它融和到一起.
<jsp:include page="..." flush="true" />引入執行頁面或servlet所生成的應答文本.
另外在兩種用法中file和page屬性都被解釋為一個相對的URI.如果它以斜杠開頭,那么它就是一個環境相關的路徑.將根據賦給應用程序的URI的前綴進行解釋,如果它不是以斜杠開頭,那么就是頁面相關的路徑,就根據引入這個文件的頁面所在的路徑進行解釋.
<%@ include file="..."%> 為靜態的
<jsp:include page="..." flush="true" />為動態的
動態include 它總是會檢查所含文件中的變化, 適合用於包含動態頁面, 並且可以帶參數 靜態include用include偽碼實現, 不會檢查所含文件的變化, 適用於包含靜態頁面
通常當應用程序中所有的頁面的某些部分(例如標題、頁腳和導航欄)都相同的時候,我們就可以考慮用include。