JSTL改進JSP來簡化網頁的實現過程(2)
來源:互聯網
上載者:User
JSTL標記庫
至此,我已經解釋了一些基本原理並且涵蓋了EL文法。我要專門討論四種JSTL標記庫。我主要討論核心庫,因為它是你一定要使用的;但是,我也會詳細的討論其餘幾個,以便你能啟動它。
首先,儘管我應該更多地談論JSTL標記庫的兩種風格,我上面提到的每個JSTL標記庫以兩個版本出現:一個支援褂門L的運算式;另一個支援標準JSP運算式。當你引入任何標記庫到一個JSP頁時,你要定義一個首碼,該首碼指定了與庫中標記相對應的命名空間。
四種標準標記庫,和他們的JSTL規範定義的首碼常規,列表如下。記住:你可以定義自己的首碼,但是這絕對沒有什麼好處。
四種標準標記庫
為了使用頁中的核心標記庫( 實際上,你使你的頁對標記庫的命名空間可見),在你的頁首包含下列例子中的指令:
<%@ taglib prefix="c" uri=http://java.sun.com/jstl/core %>
為了使用該標記庫的標記,用你在你的包含語句中設計好的首碼,在你的頁中給每個標記加上首碼:
<c:out value="${anExpression}"/>
核心資料庫
讓我們更詳細的測試核心資料庫,先看看他最通用的功能。
顯示/設定值和異常處理
核心庫的最基本的標記是c:out標記,它在頁中顯示一個EL運算式的值。一個使用c:out的運算式通常是這樣:
We have <c:out value="${applicationScope.product.inventoryCount}"
escapeXml="true" default="0" /> of those items in stock.
上例中,value屬性是我們送到頁輸出的運算式。我也說明了選項escapeXml的屬性和預設屬性。escapeXml的屬性指定了XML字元(<、>、 &、 和 .)是否應該轉化為相應的字元實體代碼(這樣他們可以讓這些字元出現在一個HTML頁中);預設屬性用於EL不能估算出數值或者數值計算出來為空白的情況。
注意:當EL支援完全貫穿整個JSP2.0的時候,你不需要使用c:out動作;你可以僅嵌套JSP運算式直接在頁中。
另一個普遍使用的核心動作是c:set,它在頁中設定一個變數。你可以用兩種方法使用c:set動作,第一種方法設定在var屬性中定義的變數到在value屬性中定義的值上,方法如下:
<c:set var="customerID" value="$param:customerNumber" scope="session" />
上述的選擇項scope屬性指定了我們要在會話期範圍內設定變數customerID;如果範圍沒有制定,範圍預設為頁。
c:set另一個強大的用途就是將c:set標記的體的內容賦給一個指定的變數: