首先
<%@ 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所生成的應答文本.