首先
<%@ include file=” ”%>:為指令元素
<jsp:include page=” ” flush=”true”/>:為 動作元素
先說指令元素:
include指令元素讀入指定頁面的內容。並把這些內容和原來的頁面融合到一起。
然后經過兩個階段:
1.將jsp翻譯成 servlet
2.servlet 翻譯成 .class文件
這樣的話,在被引入文件中請不要加入 contentype 的屬性 ,因為jsp頁面中不能指定多個contentType
動作元素:
它並沒有把所要添加的jsp的代碼加入到被添加的jsp中
只是在運行時引入了要添加的jsp頁面執行后所產生的應答,這意味着我們可以指定任何能夠產生應答的Web資源,(例如一個servlet或一個jsp頁面),只要這些資源所產生的類型和jsp頁面產生的編碼類型相同(如果編碼類型不同,則會出現亂碼).JSP容器將通過一個內部的函數調用來執行指定的資源,因此,這些被引入的資源可以幫 助處理原來的請求,所以這些資源可以訪問請求作用域內的所有對象.以及所有原來的請求參數.
如果修改了要添加的jsp頁面,那么可以立刻使用該頁面的最新版本,這是因為對待被引入的頁面的方式與對待由瀏覽器直接調用的jsp頁面的方式完全相同。即容器檢測頁面的變化,並自動進入翻譯階段,以得到頁面的最新版本。
以下是對include 兩種用法的區別,主要有兩個方面的不同:
執行時間上:
<%@ include file=” .jsp”%> 是在翻譯階段執行
<jsp:include page=” .jsp” flush=”true” /> 在請求處理階段執行.
引入內容的不同:
<%@ include file=” .jsp”%>引入靜態文本(html,jsp),在JSP頁面被轉化成servlet之前和它融和到一起.
<jsp:include page=” .jsp” flush=”true” />引入執行頁面或servlet所生成的應答文本.
大家可以參考:http://developer.51cto.com/art/200902/111134.htm