標籤的用法

描述 : 標籤允許包含另一個 JSP 頁面到本頁面來。jsp有兩種內置機制可以將來自不同 URL 的內容合併到一個 JSP 頁面:include 僞指令和 <jsp:include> 操作。不過,不管是哪種機制,要包含的內容都必須屬於與頁面本身相同的 Web 應用程序(或 servlet 上下文)。兩個標記之間的主要區別在於: include 僞指令在頁面編譯期間合併被包含的內容,而 <jsp:include> 操作卻在請求處理 JSP 頁面時進行。
core 庫的 <c:import>和 <jsp:include> 一樣, <c:import> 也是一種請求時操作,它的基本任務就是將其它一些 Web 資源的內容插入 JSP 頁面中。 通過 url 屬性指定將要導入內容的 URL,這個屬性是 <c:import> 的唯一一個必選屬性。這裏允許使用相對 URL,並且根據當前頁面的 URL 來解析這個相對 URL。但是,如果 url 屬性的值以斜槓開始,那麼它就被解釋成本地 JSP 容器內的絕對 URL。如果沒有爲 context 屬性指定值,那麼就認爲這樣的絕對 URL 引用當前 servlet 上下文內的資源。如果通過 context 屬性顯式地指定了上下文,那麼就根據指定的 servlet 上下文解析絕對(本地)URL。 但 <c:import> 操作並不僅僅限於訪問本地內容。也可以將包含協議和主機名的完整 URI 指定爲 url 屬性的值。實際上,協議甚至不僅侷限於 HTTP。 <c:import> 的 url 屬性值可以使用 java.net.URL 類所支持的任何協議。

語法 :
語法1:資源的內容使用String對象向外暴露
<c:import url="url" [context="context"]
[var="varName"] [scope="{page|request|session|application}"] [charEncoding="charEncoding"]>
內容
</c:import>
語法2:資源的內容使用Reader對象向外暴露。
<c:import url="url" [context="context"]
varReader="varReaderName" [charEncoding="charEncoding"]>
內容
</c:import>

屬性 :
屬性名
描述
類型
是否接受動態值
是否支持 EL
是否
必須
默認值
說明

url
統一資源定位器
String
true
Y


待導入資源的URL,可以是相對路徑和絕對路徑,並且可以導入其他主機資源

context
上下文
String
true
Y


當使用相對路徑訪問外部context資源時,context指定了這個資源的名字。

var
變量
String
false
N


參數的名字。

scope
範圍
String
false
N

page
var參數的作用範圍。

cahrEncoding
字符編碼
String
true
Y


輸入資源的字符編碼。

varReader
資源 閱讀器
String
false
N


這個參數的類型是Reader,用於讀取資源。



說明
<c:import>中必須要有 url 屬性,它是用來設定被包含網頁的地址。它可以爲絕對地址或是相對地址.
<c:import>也支持FTP協議,假設現在有一個 FTP站臺,地址爲 ftp.javaworld.com.tw,它裏面有一個文件data.txt,那麼可以寫成如下方式將其內容顯示出來:
<c:import url="ftp://ftp.cse.yzu.edu.tw/data.txt" />
另外,可以在<c:import>的本體內容中使用<c:param>,它的功用主要是:可以將參數傳遞給被包含的文件,它有兩個屬性name和value.如:
<c:import url="http://java.sun.com" >
<c:param name="test" value="1234" />
</c:import>
這樣的做法等於是包含一個文件,並且所指定的網址會變成如下:
http://java.sun.com?test=1234

實例 :
----------------------------------------------------------------------------------------------------------------------------------------
Example1
<c:catch var="exception">
<c:import url="ftp://ftp.example.com/package/README"/>
</c:catch>
<c:if test="${not empty exception}">
Sorry, the remote content is not currently available.
</c:if>
<c:import> 操作用來包含通過 FTP 協議訪問的文檔內容。此外,還使用了 <c:catch> 操作,以便在本地處理 FTP 文件傳送期間可能發生的任何錯誤。錯誤處理是這樣實現的:使用 <c:catch> 的 var 屬性爲異常指定一個限定了作用域的變量,然後使用 <c:if> 檢查其值。如果產生了異常,那麼就會對那個限定了作用域的變量進行賦值:如清單 18 中的 EL 表達式所顯示的那樣,該變量的值將 不會爲空。由於 FTP 文檔的檢索將會失敗,因此會顯示有關這種情況的錯誤消息。<c:import> 操作的最後兩個(可選的)屬性是 var 和 scope 。 var 屬性會導致從指定 URL 獲取的內容(作爲 String 值)被存儲在一個限定了作用域的變量中,而不是包含在當前 JSP 頁面中。 scope 屬性控制該變量的作用域,缺省情況下是頁面作用域。如同我們在今後的文章中將要看到的那樣,JSTL xml 庫中的標記利用了 <c:import> 這種能力,即將整個文檔存儲在一個限定了作用域的變量中。

還要注意的是,可以使用(可選的)嵌套的 <c:param> 標記來爲正在導入的 URL 指定請求參數。與在 <c:url> 中嵌套 <c:param> 標記一樣,必要時也要對參數名稱和參數值進行 URL 編碼。
----------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:import url="/MyHtml.html" var="thisPage" />
<c:import url="/MyHtml.html" context=”/sample2” var="thisPage"/>
<c:import url="www.sample.com/MyHtml.html" var="thisPage"/>
該示例演示了三種不同的導入方法,第一種是在同一 Context 下的導入,第二種是在不同的 Context 下導入,第三種是導入任意一個 URL 。
發佈了97 篇原創文章 · 獲贊 0 · 訪問量 2762
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章