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標記的體的內容賦給一個指定的變量: