天天看點

jstl依賴_JSTL你了解多少?|樂位元組

大家好,歡迎來到樂位元組小樂的Java技術分享園地

回顧上篇内容:

樂位元組:JSP詳解|樂位元組​zhuanlan.zhihu.com

jstl依賴_JSTL你了解多少?|樂位元組

一、簡介

Java Server Pages Standard Tag Libray(JSTL):JSP 标準标簽庫,是一個定制标簽類庫的集合,用于解決一些常見的問題,例如疊代一個映射或者集合、條件測試、XML 處理,甚至資料庫和通路資料庫操作等。

我們現在隻讨論 JSTL 中最重要的标簽,疊代集合以及格式化數字和日期幾個标簽。

核心标簽庫

:http://java.sun.com/jsp/jstl/core 包含 Web 應用的常見工作,比如:循環、表達式指派、基本輸入輸出等。

格式化标簽庫

:http://java.sun.com/jsp/jstl/fmt 用來格式化顯示資料的工作,比如:對不同區域的日期格式化等。

為了在 JSP 頁面使用 JSTL 類庫,必須以下列格式使用 taglib 指令:

<%@taglib uri=”” prefix=””%>

例如:<%@taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>

字首可以是任意内容,遵循規範可以使團隊中由不同人員編寫的代碼更加相似;是以,建議使用事先設計好的字首。此時需要導入兩個jar 包

jstl依賴_JSTL你了解多少?|樂位元組

直接放入 Tomcat 的 lib 目錄下即可。

二、标簽的使用

1. 條件動作标簽

條件動作指令用于處理頁面的輸出結果依賴于某些輸入值的情況,在 Java 中是利用 if、 if…else 和 switch 語句來進行處理的。在 JSTL 中也有 4 個标簽可以執行條件式動作指令:if、 choose、when 和 otherwise。

1) if 标簽

if 标簽先對某個條件進行測試,如果該條件運算結果為 true, 則處理它的主體内容,測試結果儲存在一個 Boolean 對象中,并建立一個限域變量來引用 Boolean 對象。可以利用 var 屬性設定限域變量名,利用 scope 屬性來指定其作用範圍。

if 的文法有兩種形式:沒有主體内容、有主體内容

沒有主體内容
jstl依賴_JSTL你了解多少?|樂位元組

該情況下:var 指定的限域變量由同一個 JSP 頁面中後面的标簽測試所決定。

有主體内容
jstl依賴_JSTL你了解多少?|樂位元組

主體内容為 JSP,若測試條件為 true,則處理 JSP。

JSTL中沒有else标簽,為了模拟 else 的情景,需要使用兩個 if 标簽,并且這兩個标簽為

相反

的條件。

2) choose、when 和 otherwise 标簽

choose 和 when 标簽的作用與 Java 中的 switch 和 case 關鍵字相似。也就是說:他們為互相排斥的條件式執行提供相關内容。choose 标簽内容部必須嵌有一個或多個 when 标簽, 每個 when 标簽代表可以進行運算和處理的一種情況。otherwise 标簽用于預設的條件代碼 塊,如果所有的 when 标簽的測試條件運算結果都不為 true,就會執行該代碼塊。如果有 otherwise 标簽,它必須放在最後一個 when 标簽之後,否則會報錯。

choose 和 otherwise 标簽沒有屬性

,when 标簽則必須使用 test 屬性設定一個條件,用于确定是否處理主體内容。

jstl依賴_JSTL你了解多少?|樂位元組
jstl依賴_JSTL你了解多少?|樂位元組

注意:

jstl依賴_JSTL你了解多少?|樂位元組

2. 疊代标簽

forEach 标簽

forEach 是将一個主體内容疊代多次,或者疊代一個對象集合。可以疊代的對象包括所 有的 java.util.Collection 和 java.util.Map 接口的實作,以及對象或者基本類型的數組。他還可 以疊代 java.util.Iterator 和 java.util.Enumeration,但不能在多個動作指令中使用 Iterator 或者 Enumeration,因為 Iterator 或者 Enumeration 都不能重置(reset)。 各屬性含義如下:

jstl依賴_JSTL你了解多少?|樂位元組

varStatus 屬性的使用:

jstl依賴_JSTL你了解多少?|樂位元組

forEach 的文法有兩種形式:

将 body 内容重複一定的次數:
jstl依賴_JSTL你了解多少?|樂位元組
jstl依賴_JSTL你了解多少?|樂位元組
用于疊代一個對象集合:
jstl依賴_JSTL你了解多少?|樂位元組
<%
  List list = new ArrayList();
  for (int i = 0; i < 10; i++) {
   list.add("A:" + i);
  }
  pageContext.setAttribute("li", list);
 %>
 <table>
  <tr>
   <td>List内容</td>
   <td>目前下标</td>
   <td>成員總數</td>
   <td>是/否first成員</td>
   <td>是/否為last成員</td>
  </tr>
  <c:forEach items="${li}" var="item" begin="0" end="9" varStatus="idx">
   <tr>
    <td><b>${item}</b></td>
    <td>${idx.index}</td>
    <td>${idx.count }</td>
    <td>${idx.first }</td>
    <td>${idx.last}<br /></td>
   </tr>
  </c:forEach>
 </table>
           

内容主體為 JSP,對于每一次疊代,forEach 标簽都會建立一個限域變量,其名稱通過 var 屬性設定。利用 forEach 疊代一個 Map,分别利用 key 和 value 屬性引用一個 Map 鍵和一個 Map 值。

<%
  Map map = new HashMap();
  map.put("map1", "shsxt");
  map.put("map2", "bjsxt");
  map.put("map3", "sxt");
  pageContext.setAttribute("map", map);
 %>
 <c:forEach items="${map}" var="myMap">
  ${myMap.key}:
  ${myMap.value}<br />
 </c:forEach>
           

3. 格式化動作指令

JSTL 提供了格式化和解析數字和日期的标簽,我們讨論裡面有:formatNumber、formatDate、parseNumber及parseDate。

1) formatNumber 标簽

matNumber 标簽 該标簽用指定的格式或精度來格式化數字,<fmt:formatNumber>标簽有如下屬性: 使用該标簽時,有兩種文法:

沒有主體内容
jstl依賴_JSTL你了解多少?|樂位元組
有主體内容
jstl依賴_JSTL你了解多少?|樂位元組

3) formatDate 标簽

使用指定的風格或模式格式化日期和時間,<fmt:formatDate>标簽有如下屬性:

jstl依賴_JSTL你了解多少?|樂位元組

pattern 屬性指定更精确的處理日期:

jstl依賴_JSTL你了解多少?|樂位元組

4) parseNumber 标簽

利用 parseNumber 标簽可以将數字、貨币或百分比的字元串表示法解析成指定語言環 境的數字。即解析一個代表着數字,貨币或百分比的字元串。兩種文法形式:

沒有主體内容
jstl依賴_JSTL你了解多少?|樂位元組
使用主體内容
jstl依賴_JSTL你了解多少?|樂位元組

<fmt:parseNumber>标簽有如下屬性

jstl依賴_JSTL你了解多少?|樂位元組

5) parseDate 标簽

此标簽為指定區域解析日期和時間的字元串表示法。即解析一個代表着日期或時間的字 符串。兩種形式:

沒有主體内容
jstl依賴_JSTL你了解多少?|樂位元組
使用主體内容
jstl依賴_JSTL你了解多少?|樂位元組

<fmt:parseDate>标簽有如下屬性

jstl依賴_JSTL你了解多少?|樂位元組

除此之外還有許多其他标簽,使用的時候查閱即可。

感謝閱讀樂位元組技術文章,請繼續關注樂位元組或添加君羊:五989六069八,更多Java技術文章奉上,下次小樂将為大家帶來json的詳細講解!

繼續閱讀