jsp頁面中jstl標籤詳解 包括< c:choose>
JSLT標籤庫,是日常開發經常使用的,也是眾多標籤中效能最好的。把常用的內容,放在這裡備份一份,隨用隨查。儘量做到不用查,就可以隨手就可以寫出來。這算是Java程式設計師的基本功吧,一定要紮實。
JSTL全名為JavaServer Pages Standard Tag Library,目前最新的版本為1.1版。JSTL是由JCP(JavaCommunity Process)所制定的標準規範,它主要提供給javaWeb開發人員一個標準通用的標籤函式庫。
Web程式設計師能夠利用JSTL和EL來開發Web程式,取代傳統直接在頁面上嵌入Java程式(Scripting)的做法,以提高程式的閱讀性、維護性和方便性。
JSTL 1.1必須在支援Servlet 2.4且JSP 2.0以上版本的
<%@ taglib %>引入標籤庫
=========================================================================
1、以classPath中,加入jar包: standard-1.1.2.jar , jstl-1.1.2.jar
2、在相目\WEB-INF\tld\資料夾中放入常用的tld檔案:c.tld,fmt.tld
3、在jsp檔案的頂部加入以下內容:
Java程式碼- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"
- <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<c:> 核心標籤庫
==========================================================================
JSTL 核心標籤庫(C標籤)標籤共有13個,功能上分為4類:
1.表示式控制標籤:out、set、remove、catch
2.流程控制標籤:if、choose、when、otherwise
3.迴圈標籤:forEach、forTokens
4.URL操作標籤:import、url、redirect
<c:forEach> 標籤
-------------------------------------------------------------------
為迴圈控制,它可以將集合(Collection)中的成員循序瀏覽一遍。
<c:forEach> 標籤的語法 說明 :
語法1:迭代一集合物件之所有成員
Html程式碼- <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
- 本體內容
- </c:forEach>
語法2:迭代指定的次數
Html程式碼- <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin"end="end" [step="step"]>
- 本體內容
- </c:forEach>
<c:forEach> 標籤的 屬性說明 :
<c:forEach> 標籤的 屬性 : varStatus屬性: 它的提供另外四個屬性:index,count,fist和last,它們個自的意義如下:
Java程式碼- 屬性 型別 意義
- index number 現在指到成員的索引
- count number 總共指到成員的總和
- first boolean 現在指到成員是否為第一個
- last boolean 現在指到成員是否為最後一個
<c:forEach> 遍歷 List列表:
對於一個基本型別的陣列,當前元素將作為相應包裝類(Integer、Float等等)的一個例項提供。
Html程式碼- <c:forEachitems="${domainList }"var="item">
- <tr>
- <tdalign="center"valign="middle">${item["domain"]==null?" ":item["domain"]}</td>
- <tdalign="center"valign="middle"><fmt:formatDatevalue="${item['bind_date']}"pattern="yyyy-MM-dd HH:mm:ss"/></td>
- <tdalign="center"valign="middle">
- <c:iftest="${item['domain']!=null}">
- <ahref="javascript:;"id="${item['domain']}"class="del"> </a>
- </c:if>
- </td>
- </tr>
- </c:forEach>
<c:forEach> 遍歷Map:
對於一個java.util.Map,當前元素則作為一個java.util.Map.Entry提供。
Html程式碼- <c:iftest="${!empty permissionMap}">
- <c:forEachitems="${permissionMap}"var="item">
- <tr>
- <td>${item.value.id}</td>
- <td>${item.value.urlOnClass}</td>
- <td>${item.value.urlOnMethod}</td>
- </tr>
- </c:forEach>
- </c:if>
<c:forTokens> 標籤
-------------------------------------------------------------------
用來瀏覽一字串中所有的成員,其成員是由定義符號(delimiters)所分隔的。
<c:forTokens> 標籤的語法 說明 :
Html程式碼- <c:forTokensitems="stringOfTokens"delims="delimiters" [var="varName"]
- [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
- 本體內容
- </c:forTokens>
<c:forTokens> 標籤的 屬性說明 :
<c:out> 標籤
-------------------------------------------------------------------
主要用來顯示資料的內容
<c:out> 標籤的語法 說明 :
語法1:沒有本體(body)內容
Html程式碼- <c:outvalue="value" [escapeXml="{true|false}"] [default="defaultValue"] />
語法2:有本體內容
Html程式碼- <c:outvalue="value" [escapeXml="{true|false}"]>
- default value
- </c:out>
<c:forEach> 標籤的 屬性說明 : 略
一般來說,<c:out>預設會將<、>、’、” 和 & 轉換為 <、>、'、" 和&。假若不想轉換時,只需要設定<c:out>的escapeXml屬性為fasle就可以了。
<c:set> 標籤
-------------------------------------------------------------------
主要用來將變數儲存至JSP範圍中或是JavaBean的屬性中。
<c:set> 標籤的語法 說明 :
語法1:將value的值儲存至範圍為scope的 varName 變數之中
Html程式碼- <c:setvalue="value"var="varName" [scope="{ page|request|session|application }"]/>
語法2:將本體內容的資料儲存至範圍為scope的 varName 變數之中
Html程式碼- <c:setvar="varName" [scope="{ page|request|session|application }"]>
- … 本體內容
- </c:set>
語法3:將 value的值儲存至 target 物件的屬性中
Html程式碼- <c:setvalue="value"target="target"property="propertyName"/>
語法4:將本體內容的資料儲存至target 物件的屬性中
Html程式碼- <c:settarget="target"property="propertyName">
- … 本體內容
- </c:set>
<c:set> 標籤的 屬性說明 :
<c:remove> 標籤
-------------------------------------------------------------------
主要用來移除變數。
<c:remove> 標籤的語法 說明 :
Html程式碼- <c:removevar="varName" [scope="{ age|request|session|application }"] />
<c:catch> 標籤
-------------------------------------------------------------------
主要用來處理產生錯誤的異常狀況,並且將錯誤資訊儲存起來。
<c:catch> 標籤的語法 說明 :
Html程式碼- <c:catch [var="varName"] >
- … 欲抓取錯誤的部分
- </c:catch>
<c:if> 標籤
-------------------------------------------------------------------
的用途就和我們一般在程式中用的if一樣。
<c:if> 標籤的語法 說明 :
語法1:沒有本體內容(body)
Html程式碼- <c:iftest="testCondition"var="varName" [scope="{page|request|session|application}"]/>
語法2:有本體內容
Html程式碼- <c:iftest="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
- 本體內容
- </c:if>
示例:
Html程式碼- <c:iftest="${not empty item.publish_time}">
- 內容
- </c:if>
- <c:iftest="${item['domain']!=null}">
- 內容
- </c:if>
- <c:iftest="${!empty permissionMap}">
- 內容
- </c:if>
c:choose> <c:when> <c:otherwise> 標籤
-------------------------------------------------------------------
<c:choose when otherwise> 標籤的語法 說明 :
Html程式碼- <c:setvar="score">85</c:set>
- <c:choose>
- <c:whentest="${score>=90}">
- 你的成績為優秀!
- </c:when>
- <c:whentest="${score>=70&&score<90}">
- 您的成績為良好!
- </c:when>
- <c:whentest="${score>60&&score<70}">
- 您的成績為及格
- </c:when>
- <c:otherwise>
- 對不起,您沒有通過考試!
- </c:otherwise>
- </c:choose>
<fmt:> 格式 化標籤庫
==========================================================================
一:JSTL格式化標籤又稱為I18N標籤庫,主要用來編寫國際化的WEB應用,使用此功能可以對一個特定的語言請求做出合適的處理。
例如:中國內地使用者將顯示簡體中文,臺灣地區則顯示繁體中文,使用I18N格式化標籤庫還可以格式化數字和日期,例如同一數字或日趨,在不同國家可能有不同的格式,使用I18N格式標籤庫可以將數字和日期格式為當地的格式。
在JSP頁面中要使用到格式化標籤,需要引入下面的語句:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"% >
二:概覽
-------------------------------------------------------------------
格式化標籤
<fmt:fromatNumber>
<fmt:formatDate>
<fmt:parseDate>
<fmt:parseNumber>
<fmt:setTimeZone>
<fmt:timeZone>
國際化標籤
<fmt:setLocale>
<fmt:requestEncoding>
<fmt:bundle>
<fmt:message>
<fmt:param>
<fmt:setBundle>
三:<fmt:formatNumber>
-------------------------------------------------------------------
此標籤會根據區域定製的方式將數字格式化成數字,貨幣,百分比。
此標籤的屬性:
value:要格式化的數字
type:按照什麼型別格式化
pattern:自定義格式化樣式
currencyCode:ISO-4721貨幣程式碼,只適用於按照貨幣格式化的數字
currencySymbol: 貨幣符號,如¥,只適用於按照貨幣格式化的數字
groupingUsed: 是否包含分隔符
maxIntegerDigits: 整數部分最多顯示多少位
mixIntegerDigits: 整數部分最少顯示多少位
maxFractionDigits: 小數部分最多顯示多位位
minFractionDigits: 小數部分最少顯示多位位
var:儲存格式化後的結果
scope: 儲存的範圍
示例1:
Java程式碼
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>chapter4.jsp</title>
</head>
<body>
<div>
<div>
<fmt:setLocale value="fr_fr"/>
<fmt:formatNumber value="123456789.012"/>
<br/>
<fmt:setLocale value="zh_cn"/>
<fmt:formatNumber value="123456789.012"/>
<br />
<fmt:setLocale value="de_de"/>
<fmt:formatNumber value="123456789.012"/>
<br />
</div>
</div>
</body>
</html>
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>chapter4.jsp</title>
</head>
<body>
<div>
<div>
<fmt:setLocale value="fr_fr"/>
<fmt:formatNumber value="123456789.012"/>
<br/>
<fmt:setLocale value="zh_cn"/>
<fmt:formatNumber value="123456789.012"/>
<br />
<fmt:setLocale value="de_de"/>
<fmt:formatNumber value="1