jstl標籤有哪些分類-樂字節前端

JSTL

標籤的使用

​ Java Server Pages Standard Tag Libray(JSTL):JSP 標準標籤庫,是一個定製標籤類庫的集合,用於解決一些常見的問題,例如迭代一個映射或者集合、條件測試、XML 處理,甚至數據庫和訪問數據庫操做等。java

​ 咱們如今只討論 JSTL 中最重要的標籤,迭代集合以及格式化數字和日期幾個標籤。數據庫

核心標籤庫apache

http://java.sun.com/jsp/jstl/core 數組

​ 包含 Web 應用的常見工做,好比:循環、表達式賦值、基本輸入輸出等。session

格式化標籤庫app

http://java.sun.com/jsp/jstl/fmt jsp

​ 用來格式化顯示數據的工做,好比:對不一樣區域的日期格式化等。ide

​ 爲了在 JSP 頁面使用 JSTL 類庫,必須如下列格式使用 taglib 指令:測試

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

​ 例如:設計

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

​ 前綴能夠是任意內容,遵循規範可使團隊中由不一樣人員編寫的代碼更加類似;因此,建議使用事先設計好的前綴。

​ 此時須要導入兩個jar 包

jstl_1.png

​ 從Apache的標準標籤庫中下載的二進包(jakarta-taglibs-standard-current.zip)。

​ 官方下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

​ 下載 jakarta-taglibs-standard-1.1.2.zip 包並解壓,將 jakarta-taglibs-standard-1.1.2/lib/ 下的兩個 jar 文件:standard.jarjstl.jar 文件拷貝到項目的指定目錄下。

條件動做標籤

​ 條件動做指令用於處理頁面的輸出結果依賴於某些輸入值的狀況,在 Java 中是利用 if、 if…else 和 switch 語句來進行處理的。在 JSTL 中也有 4 個標籤能夠執行條件式動做指令:if、 choose、when 和 otherwise。

if 標籤

​ if 標籤先對某個條件進行測試,若是該條件運算結果爲 true, 則處理它的主體內容,測試結果保存在一個 Boolean 對象中,並建立一個限域變量來引用 Boolean 對象。能夠利用 var 屬性設置限域變量名,利用 scope 屬性來指定其做用範圍。

語法格式
<c:if test="<boolean>" var="<string>" scope="<string>">
   ...
</c:if>
屬性

if 標籤有以下屬性:

屬性 描述 是否必要 默認值
test 條件
var 用於存儲條件結果的變量(限域變量名)
scope var屬性的做用域<br />可取值:page|request|session|application page
示例
<%
    request.setAttribute("flag",true);
    request.setAttribute("num",1);
%>
<c:if test="${flag}">
   <p>結果爲true<p>
</c:if>
<c:if test="${num > 0}">
   <p>num的值比0大<p>
</c:if>

注:<font color="red"> JSTL中沒有else標籤</font>,爲了模擬 else 的情景,須要使用兩個 if 標籤,而且這兩個標籤爲相反的條件。

choose、when 和 otherwise 標籤

​ choose 和 when 標籤的做用與 Java 中的 switch 和 case 關鍵字類似,用於在衆多選項中作出選擇。也就是說:他們爲相互排斥的條件式執行提供相關內容。

​ switch語句中有case,而choose標籤中對應有when,switch語句中有default,而choose標籤中有otherwise。

語法格式
<c:choose>
    <c:when test="<boolean>">
        ...
    </c:when>
    <c:when test="<boolean>">
        ...
    </c:when>
    ...
    ...
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>
屬性
  • choose標籤沒有屬性。
  • when標籤只有一個test屬性。
  • otherwise標籤沒有屬性。
示例
<%
    request.setAttribute("score", 90);
%>
<c:choose>
    <c:when test="${score < 60 }">
        <h3>你個小渣渣!</h3>
    </c:when>
    <c:when test="${score >= 60 && score < 80 }">
        <h3>革命還沒有成功,同志仍需努力!</h3>

    </c:when>
    <c:otherwise>
        <h3>你很棒棒哦!</h3>
    </c:otherwise>
</c:choose>
注意點
  • choose標籤和otherwise標籤沒有屬性,而when標籤必須設置test屬性
  • choose標籤中必須有至少一個when標籤,能夠沒有otherwise標籤
  • otherwise標籤必須放在最後一個when標籤以後
  • choose標籤中只能有when標籤和otherwise標籤,when標籤和otherwise標籤能夠嵌套其餘標籤
  • otherwise標籤在全部的when標籤不執行的狀況下才會執行

迭代標籤

​ forEach 是將一個主體內容迭代屢次,或者迭代一個對象集合。能夠迭代的對象包括全部的 java.util.Collection 和 java.util.Map 接口的實現,以及對象或者基本類型的數組。他還可 以迭代 java.util.Iterator 和 java.util.Enumeration,但不能在多個動做指令中使用 Iterator 或者 Enumeration,由於 Iterator 或者 Enumeration 都不能重置(reset)。 各屬性含義以下:

forEach標籤

語法格式
<c:forEach
    items="<object>"
    begin="<int>"
    end="<int>"
    step="<int>"
    var="<string>"
    varStatus="<string>">
</c:forEach>
屬性
屬性 描述 是否必要 默認值
items 要被循環的數據
begin 開始的元素(0=第一個元素,1=第二個元素) 0
end 最後一個元素(0=第一個元素,1=第二個元素) Last element
step 每一次迭代的步長 1
var 表明當前條目的變量名稱
varStatus 表明循環狀態的變量名稱

forEach varStatus 屬性

  • index: 當前此次迭代從 0 開始的迭代索引
  • count: 當前此次迭代從 1 開始的迭代計數
  • first: 用來代表當前這輪迭代是否爲第一次迭代的標誌
  • last: 用來代表當前這輪迭代是否爲最後一次迭代的標誌
示例

1.遍歷主體內容屢次

<c:forEach begin="開始數" end="結束數" step="迭代數" var="限域變量名">

</c:forEach>

至關於java的for循環:

for(int i = 0; i < 10; i++) {

}

以下:

<!-- 遍歷主體內容屢次  -->
<c:forEach begin="0" end="10" var="i" >
    標題${i }<br>
</c:forEach>

2.循環

<c:forEach items="被循環的集合" var="限域變量名" varStatus="當前成員對象的相關信息">

</c:forEach>

至關於java的foreach循環:

for(String str : list) {

}

以下:

<%
    List<String> list = new ArrayList<String>();
    for (int i = 1; i <= 10; i++) {
        list.add("A:" + i);
    }
    pageContext.setAttribute("li", list);
%>

<!-- 循環集合 -->
<c:forEach items="${li }" var="item">
    ${item }
</c:forEach>
<hr>
<table align="center" width="800" border="1" style="border-collapse: collapse;">
    <tr>
        <th>名稱</th>
        <th>當前成員下標</th>
        <th>當前成員循環數</th>
        <th>是否第一次被循環</th>
        <th>是否最後一次被循環</th>
    </tr>
    <c:forEach items="${li }" var="item" varStatus="itemp">
        <tr>
            <td>${item }</td>
            <td>${itemp.index }</td>
            <td>${itemp.count }</td>
            <td>${itemp.first }</td>
            <td>${itemp.last }</td>
        </tr>
    </c:forEach>
</table>

<!-- 循環對象集合 -->
<%
    List<User> userList = new ArrayList<User>();
    User user = new User(1,"zhangsan","123456");
    User user2 = new User(2,"lisi","123321");
    User user3 = new User(3,"wangwu","654321");
    userList.add(user);
    userList.add(user2);
    userList.add(user3);
    // 將數據設置到做用域中
    request.setAttribute("userList", userList);
%>
<c:if test="${!empty userList }">
    <table align="center" width="800" border="1" style="border-collapse: collapse;">
        <tr>
            <th>用戶編號</th>
            <th>用戶名稱</th>
            <th>用戶密碼</th>
            <th>用戶操做</th>
        </tr>
        <c:forEach items="${userList }" var="user">
            <tr align="center">
                <td>${user.userId }</td>
                <td>${user.uname }</td>
                <td>${user.upwd }</td>
                <td>
                    <button>修改</button> 
                    <button>刪除</button>
                </td>
            </tr>
        </c:forEach>
    </table>
</c:if>

<!-- 遍歷Map -->
<%
    Map<String,Object> map = new HashMap<String,Object>();
    map.put("map1", "aaa");
    map.put("map2", "bbb");
    map.put("map3", "ccc");
    pageContext.setAttribute("map", map);
%>
<c:forEach items="${map }" var="mymap">
    鍵:${mymap.key }-值:${mymap.value } <br>
</c:forEach>

格式化動做標籤

​ JSTL 提供了格式化和解析數字和日期的標籤,咱們討論裏面有:formatNumber、formatDate、parseNumber及parseDate。

formatNumber標籤

​ formatNumber標籤用於格式化數字,百分比,貨幣。該標籤用指定的格式或精度來格式化數字。(將數值型數據轉換成指定格式的字符串類型。)

語法格式
<fmt:formatNumber
  value="<string>"
  type="<string>"
  var="<string>"
  scope="<string>"/>
屬性
屬性 描述 是否必要 默認值
value 要顯示的數字
type NUMBER,CURRENCY,或 PERCENT類型 Number
var 存儲格式化數字的變量 Print to page
scope var屬性的做用域 page

注意:

  1. 若是設置了var屬性,則格式化後的結果不會輸出,須要經過el表達式獲取var對應的限域變量名
  2. 默認的類型(type)的取值爲number。可取值:number數值型、percent百分比類型、currency貨幣型
示例
<fmt:formatNumber value="10" type="number" var="num" /> ${num } <br>
<fmt:formatNumber value="10" type="percent"  />  <br>
<fmt:formatNumber value="10" type="currency"  />  <br>
<!-- 設置時區  -->
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="10" type="currency"  />  <br>

formatDate標籤

​ formatDate標籤用於使用不一樣的方式格式化日期。(將Date型數據轉換成指定格式的字符串類型。)

語法格式
<fmt:formatDate
  value="<string>"
  type="<string>"
  dateStyle="<string>"
  timeStyle="<string>"
  pattern="<string>"
  timeZone="<string>"
  var="<string>"
  scope="<string>"/>
屬性
屬性 描述 是否必要 默認值
value 要顯示的日期
type DATE, TIME, 或 BOTH date
dateStyle FULL, LONG, MEDIUM, SHORT, 或 DEFAULT default
timeStyle FULL, LONG, MEDIUM, SHORT, 或 DEFAULT default
pattern 自定義格式模式
timeZone 顯示日期的時區 默認時區
var 存儲格式化日期的變量名 顯示在頁面
scope 存儲格式化日誌變量的範圍 頁面

標籤格式模式

代碼 描述 實例
y 不包含紀元的年份。若是不包含紀元的年份小於 10,則顯示不具備前導零的年份。 2002
M 月份數字。一位數的月份沒有前導零。 April & 04
d 月中的某一天。一位數的日期沒有前導零。 20
h 12 小時制的小時。一位數的小時數沒有前導零。 12
H 24 小時制的小時。一位數的小時數沒有前導零。 0
m 分鐘。一位數的分鐘數沒有前導零。 45
s 秒。一位數的秒數沒有前導零。 52
示例
<%
    request.setAttribute("myDate", new Date());
%>

${myDate } <br/>
<fmt:formatDate value="${myDate }" /><br/>
<fmt:formatDate value="${myDate }" type="date"/><br/>
<fmt:formatDate value="${myDate }" type="time"/><br/>
<fmt:formatDate value="${myDate }" type="both"/><br/>
<fmt:formatDate value="${myDate }" type="both" dateStyle="full"/><br/>
<fmt:formatDate value="${myDate }" type="both" dateStyle="long"/><br/>
<fmt:formatDate value="${myDate }" type="both" dateStyle="short"/><br/>
<fmt:formatDate value="${myDate }" type="both" timeStyle="full"/><br/>
<fmt:formatDate value="${myDate }" type="both" timeStyle="long"/><br/>   
<fmt:formatDate value="${myDate }" pattern="HH:mm yyyy/MM/dd"/><br/>

parseNumber標籤

​ parseNumber標籤用來解析數字,百分數,貨幣。(parseNumber 標籤能夠將數字、貨幣或百分比類型的字符串轉換成數值型。)

語法格式
<fmt:parseNumber
  value="<string>"
  type="<string>"
  var="<string>"
  scope="<string>"/>
屬性
屬性 描述 是否必要 默認值
value 要解析的數字 Body
type NUMBER,,CURRENCY,或 PERCENT number
var 存儲待解析數字的變量 Print to page
scope var屬性的做用域 page
示例
<fmt:parseNumber value="100"  /> <br>
<fmt:parseNumber value="100"  type="number" /> <br>
<fmt:parseNumber value="100%"  type="percent" /> <br>
<fmt:parseNumber value="¥10.00"  type="currency" /> <br>

parseDate標籤

​ parseDate標籤用於解析日期。(將指定格式的字符串轉換成Date類型。)

語法格式
<fmt:parseDate
   value="<string>"
   type="<string>"
   dateStyle="<string>"
   timeStyle="<string>"
   pattern="<string>"
   var="<string>"
   scope="<string>"/>
屬性
屬性 描述 是否必要 默認值
value 要顯示的日期
type DATE, TIME, 或 BOTH date
dateStyle FULL, LONG, MEDIUM, SHORT, 或 DEFAULT default
timeStyle FULL, LONG, MEDIUM, SHORT, 或 DEFAULT default
pattern 自定義格式模式
var 存儲格式化日期的變量名 顯示在頁面
scope 存儲格式化日誌變量的範圍 頁面
示例
<fmt:parseDate value="2020-01-06" type="date" /> <br>
<fmt:parseDate value="2020/01/06" pattern="yyyy/MM/dd" /> <br>
相關文章
相關標籤/搜索