20080823-jsp中include指令与动作的不同
?一、include 指令
格式:
<%@include file="文件的絕對路徑或者相對路徑"%>?
?
file屬性:指定被包含的文件,是必添屬性。該屬性不支持任何表達式,也不允許通過如下方式來傳遞參數。
<%@include file="welcome.jsp?name=mr"%>?
?
如果路徑以“/”開頭,那么指定的是一個絕對路徑,將在當前應用的根目錄下查找文件,如果是以文件名或文件夾名開頭,那么指定的是一個相對路徑,將在當前應用的根目錄下查找文件。
?
二、include動作
格式:
<jsp:include page="被包含文件的路徑" flush="true/false"> <jsp:param name="參數名稱" value="參數值"/> </jsp:inclue>?
?
page屬性:該屬性指定了被包含文件的路徑,其值可以是一個代表了相對路徑的表達式.當路徑以"/"開頭時,則按照當前應用的路徑查找這個文件,如果路徑是以文件名或者目錄名稱開頭,那么將按照當前的路徑來查找被包含的文件,
flush屬性:表示當輸出緩沖區滿時,是否清空緩沖區.
?
三、兩者的不同
1、從屬性方面進行區分
include 指令通過file屬性來指定被包含的頁面,include指令將file屬性看作一個實際存在的文件的路徑。所以該屬性不支持任何表達式,也不支持在struts應用中的請求模式(如*.do),若在file屬性值中應用JSP表達式,會拋出異
常,如下面的代碼:
<% String path="login.jsp"%> <%@inclue file="<%=path%>"%>
?
?include動作標識通過page屬性來指定被包含的頁面,該屬性支持JSP表達式和Struts 應用在的請求模式
2、從處理方式方面進行區分
?
使用include指令,被包含的文件為原封不動的插入到包含頁中使用該指令的位置,然后JSP編譯器再對這個合成的文件進行編譯,所以在一個JSP頁面中使用include指令來包含另外一個JSP頁面,最終編譯后的文件只有一個。
?
使用include 動作標識包含文件時,當該標識執行時,程序會將請求轉發到(注意是轉發而不是重定向)被包含的頁,并將執行結果輸出到瀏覽器中,然后返回包含頁繼續執行后面的代碼,因為服務器執行的是兩個文件。所以JSP編
譯器會分別對這兩個文件進行編譯。
3、從包含方式方面進行區分
?
使用include指令包含文件,最終服務器執行的是將兩個文件合成后由JSP編譯器編譯成一個Class 文件,所以被包含的文件的內容是固定不變的,若改變了被包含的文件,則主文件的代碼就發生了變化,因此服務器會重新編譯主文件
,include指令的這種包含稱為靜態包含
?
使用include動作標識通常是包含那些經常需要改動的文件,此時服務器執行的是兩個文件,被包含的文件改變不會影響到主文件,因此服務器不會對主文件重新編譯,而只需要重新編譯被包含的文件即可,而對被包含文件的編譯是在執
行時才進行的,也就是說,只有當include動作被執行時,使用該標識包含的目標文件才會被編譯,否則被包含的文件不會被編譯,所以這種包含過程稱為動態包含。
4、從被包含文件的約定方面進行區分
JSP有一些標識符例如
<%@page contentType="text/html;charset=gb2312"%>?
?
在一個JSP頁面中只能出現一次,這個時間用jsp動作包含一個文件時,包含頁與被包含頁面只能有一個文件有此標識,而include 標作沒有此限制。
總結
以上是生活随笔為你收集整理的20080823-jsp中include指令与动作的不同的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20080803
- 下一篇: 20080904--判断表单中的元素值是