天天看點

JSTL标準标簽庫(上)

JSTL(JavaServer Pages Standard Tag Library,JSP标準标簽庫)是一個不斷完善的開放源代碼的JSP标簽庫,是由apache的jakarta小組來維護的。jstl是apache對EL表達式的擴充(也就是說JSTL依賴EL),JSTL是标簽語言,是以JSTL标簽使用以來非常友善,它與JSP動作标簽一樣,隻不過它不是JSP内置的标簽,需要我們自己導包,以及指定标簽庫而已。JSTL隻能運作在支援JSP1.2和Servlet2.3規範的容器上,如tomcat 4.x。在JSP 2.0中也是作為标準支援的。

JSTL 1.0 釋出于 2002 年 6 月,由四個定制标記庫(core、format、xml 和 sql)和一對通用标記庫驗證器(ScriptFreeTLV 和 PermittedTaglibsTLV)組成。core 标記庫提供了定制操作,通過限制了作用域的變量管理資料,以及執行頁面内容的疊代和條件操作。它還提供了用來生成和操作 URL 的标記。顧名思義,format 标記庫定義了用來格式化資料(尤其是數字和日期)的操作。它還支援使用本地化資源束進行 JSP 頁面的國際化。xml 庫包含一些标記,這些标記用來操作通過 XML 表示的資料,而 sql 庫定義了用來查詢關系資料庫的操作。

如果要使用JSTL,則必須将jstl.jar和 standard.jar檔案放到classpath中,如果你還需要使用XML processing及Database access (SQL)标簽,還要将相關JAR檔案放到classpath中,這些JAR檔案全部存在于下載下傳回來的zip檔案中。

使用JSTL标簽+EL表達式+少許jsp内置标簽,在開發jsp時就幾乎看不到實質上的java代碼了,使得代碼變得更簡潔,可讀性更高,這些标簽和表達式就是為此創造的。

<br>

1.maven工程配置以下依賴:

2.需要使用taglib指令在JSP頁面中導入JSTL的标簽庫:

prefix="c":指定标簽庫的字首,這個字首可以自定義,但通常都會在使用core标簽庫時指定字首為c

完成以上操作後,就可以使用JSTL标簽了。

1.set标簽,set标簽是用于給對象屬性設定值的:

通路http://localhost:8080/JSTL-test/index.jsp ,輸出結果如下:

request session application page

在jsp的内置對象中,set标簽隻能設定這四個對象的屬性值。

可以結合EL表達式進行指派:

lisi lisi+123

除了可以設定内置對象的屬性值外,可以設定執行個體對象中的屬性值,示例:

Student代碼如下:

index.jsp代碼如下:

李四

2.out标簽,顯而易見,out是用來輸出資料的:

lisi 123456abcdef

out标簽主要的用途是過濾标記的,預設out會對标簽的尖括号進行轉換,将 &lt; 轉換成 <code>&amp;lt;</code> ,将 &gt; 轉換成 <code>&amp;gt;</code> 。如下:

&lt;hr&gt;&lt;hr&gt;

如果不需要進行轉換,把out标簽中的escapeXml屬性值設定為false即可,但是建議不要設定為false。

out标簽中有一個default屬性,可以設定一個預設輸出的值,如果沒有輸出的資料,就會預設輸出default中定義的内容:

3.remove标簽,此标簽用于删除對象中的屬性,和removeAttribute方法的功能是一樣的:

該屬性不存在!

4.catch标簽,這個标簽是用于捕獲異常的,把可能發生異常的代碼寫在catch标簽内,并且設定var屬性的值,當發生異常時,可以在var屬性值中得知異常的名稱:

java.lang.ArithmeticException: / by zero

5.if标簽,和if判斷語句是一樣的,是以很常用,判斷條件寫在test屬性中,也就是說test屬性的值隻能是true或false,我們可以通過EL表達式來産生這個值:

zero zero

6.choose标簽,這是類似于switch的一種可以實作多個條件判斷的标簽,它需要配合 c:when 和 c:otherwise 使用,每個 c:when 都是一個判斷條件,類似于case。如果沒有比對到相應的條件就會執行 c:otherwise 裡的代碼,類似于default,如下:

zero

7.forEach标簽,看名字也就知道了,這和平時java代碼中的for each是一樣的,不過這個标簽還可以用出 for(int i=0;i&lt;=10;i++){} 這種語句的效果:

1.周遊一個集合(for each):

<a href="mailto:br/%[email protected]%3Cbr/"></a> <a href="mailto:br/%[email protected]%3Cbr/"></a> <a href="mailto:br/%[email protected]%3Cbr/"></a>

<a href="mailto:br/%[email protected]%3Cbr/">2.類似于普通for循環的用法:</a>

<a href="mailto:br/%[email protected]%3Cbr/">通路http://localhost:8080/JSTL-test/index.jsp ,輸出結果如下:</a>

<a href="mailto:br/%[email protected]%3Cbr/">01 2 3 4 5 6 7 8 9 10</a>

<a href="mailto:br/%[email protected]%3Cbr/">3.forEach标簽中有一個step屬性,這個屬性用于設定每一次循環的步長,例如我要輸出2-20之間的偶數:</a>

<a href="mailto:br/%[email protected]%3Cbr/">2 4 6 8 10 12 14 16 18 20</a>

<a href="mailto:br/%[email protected]%3Cbr/">4.forEach标簽中還有一個varStatus屬性,這個屬性的值代表循環狀态的變量名稱,而且這個變量名稱還有以下幾個屬性: count:int類型,目前以周遊元素的個數; index:int類型,目前元素的下标; first:boolean類型,是否為第一個元素; last:boolean類型,是否為最後一個元素; current:Object類型,表示目前對象。</a>

<a href="mailto:br/%[email protected]%3Cbr/">示例:</a>

<a href="mailto:br/%[email protected]%3Cbr/">第一個元素 1: 小明 1: [email protected] 1: 15 目前對象:org.zero01.test.Student@3f7a889e; 下标為:0</a> <a href="mailto:br/%[email protected]%3Cbr/">2: 小紅 2: [email protected] 2: 14 目前對象:org.zero01.test.Student@7d8f4532; 下标為:1</a> <a href="mailto:br/%[email protected]%3Cbr/">3: 李四 3: [email protected] 3: 16 目前對象:org.zero01.test.Student@4f12267a; 下标為:2 最後一個元素</a>

<a href="mailto:br/%[email protected]%3Cbr/">8.forTokens标簽,這個标簽也是循環的作用,而且屬性基本上和forEach标簽一樣,隻不過forTokens标簽多了一個delims屬性,這個屬性用于定義分割符,将分割後的元素進行周遊。在這個forTokens标簽中delims屬性和items屬性都是必須有的,示例:</a>

<a href="mailto:br/%[email protected]%3Cbr/">你好 Hello Bonjour Hallo Ciao こんにちは Γειάσου Hola</a>

<a href="mailto:br/%[email protected]%3Cbr/">&lt;br&gt;</a>

<a href="mailto:br/%[email protected]%3Cbr/">9.fmt标簽庫,fmt是一個用來格式化資料的标簽庫,例如該标簽庫最常用的 f:formatDate 标簽可以用來格式化日期格式,導入這個标簽庫的語句:</a>

<a href="mailto:br/%[email protected]%3Cbr/">f:formatDate 标簽使用示例:</a>

<a href="mailto:br/%[email protected]%3Cbr/">2017-12-21 10:55:10 星期四</a>

<a href="mailto:br/%[email protected]%3Cbr/">f:formatNumber 标簽可以用來格式化數字,示例:</a>

<a href="mailto:br/%[email protected]%3Cbr/">3.50 4.4</a>

<a href="mailto:br/%[email protected]%3Cbr/">常用的JSTL标簽就介紹到這,到目前為止,使用JSTL+EL+少量的jsp内置标簽後,在jsp開發中就基本看不到實質上的java代碼了。整個畫風也整潔了很多,代碼也減少了,JSTL、EL、jsp内置标簽就是為了實作這個效果而創造的。</a>

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2053618,如需轉載請自行聯系原作者