一、JSTL標籤庫介紹
JSTL標籤庫的使用是爲彌補html標籤的不足,規範自定義標籤的使用而誕生的。使用JSLT標籤的目的就是不希望在jsp頁面中出現java邏輯代碼
二、JSTL標籤庫的分類
- 核心標籤(用得最多)
- 國際化標籤(I18N格式化標籤)
- 數據庫標籤(SQL標籤,很少使用)
- XML標籤(幾乎不用)
- JSTL函數(EL函數)
三、導入 標籤庫
jar包
在jsp頁面中:
<%@taglib prefix="前綴" uri="路徑"%>
核心標籤是最常用的 JSTL標籤。引用核心標籤庫的語法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL格式化標籤用來格式化並輸出文本、日期、時間、數字。引用格式化標籤庫的語法如下:
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:out> 標籤
<c:out>標籤用來顯示一個表達式的結果,與<%= %>作用相似,它們的區別就是<c:out>標籤可以直接通過 "." 操作符來訪問屬性。舉例來說,如果想要訪問customer.address.street,只需要這樣寫:<c:out value="customer.address.street">。<c:out>標籤會自動忽略XML標記字符,所以它們不會被當做標籤來處理。(例如:< > & ' ")
屬性
<c:out>標籤有如下屬性:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
value | 要輸出的內容 | 是 | 無 |
default | 輸出的默認值 | 否 | 主體中的內容 |
escapeXml | 是否忽略XML特殊字符 | 否 | true |
語法格式
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
<c:set> 標籤
<c:set>標籤用於把某一個對象存在指定的域範圍內,或者將某一個對象存儲到Map或者JavaBean對象中。
屬性
<c:set>標籤有如下屬性:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
value | 要存儲的值 | 否 | 主體的內容 |
target | 要修改的屬性所屬的對象 | 否 | 無 |
property | 要修改的屬性 | 否 | 無 |
var | 存儲信息的變量 | 否 | 無 |
scope | var屬性的作用域 | 否 | Page |
語法格式
<c:set
var="<string>"
value="<string>"
target="<string>"
property="<string>"
scope="<string>"/>
<c:remove> 標籤
<c:remove>標籤用於移除一個變量,可以指定這個變量的作用域,若未指定,則默認爲變量第一次出現的作用域。這個標籤不是特別有用,不過可以用來確保JSP完成清理工作。
屬性
<c:remove>標籤有如下屬性:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
var | 要移除的變量名稱 | 是 | 無 |
scope | 變量所屬的作用域 | 否 | 所有作用域 |
語法格式
<c:remove var="<string>" scope="<string>"/>
<c:if> 標籤
<c:if>標籤判斷表達式的值,如果表達式的值爲 true 則執行其主體內容。
屬性
<c:if>標籤有如下屬性:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
test | 條件 | 是 | 無 |
var | 用於存儲條件結果的變量 | 否 | 無 |
scope | var屬性的作用域 | 否 | page |
語法格式
<c:if test="<boolean>" var="<string>" scope="<string>">
...
</c:if>
<c:choose> 標籤
<c:choose>標籤與Java switch語句的功能一樣,用於在衆多選項中做出選擇。
switch語句中有case,而<c:choose>標籤中對應有<c:when>,switch語句中有default,而<c:choose>標籤中有<c:otherwise>。
屬性
- <c:choose>標籤沒有屬性。
- <c:when>標籤只有一個屬性,在下表中有給出。
- <c:otherwise>標籤沒有屬性。
- <c:when>標籤的屬性如下:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
test | 條件 | 是 | 無 |
語法格式
<c:choose>
<c:when test="<boolean>">
...
</c:when>
<c:when test="<boolean>">
...
</c:when>
...
...
<c:otherwise>
...
</c:otherwise>
</c:choose>
<c:url> 標籤
<c:url>標籤將URL格式化爲一個字符串,然後存儲在一個變量中。
這個標籤在需要的時候會自動重寫URL。
var屬性用於存儲格式化後的URL。
<c:url>標籤只是用於調用response.encodeURL()方法的一種可選的方法。它真正的優勢在於提供了合適的URL編碼,包括<c:param>中指定的參數。
屬性
<c:url>標籤有如下屬性:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
value | 基礎URL | 是 | 無 |
context | 本地網絡應用程序的名稱 | 否 | 當前應用程序 |
var | 代表URL的變量名 | 否 | Print to page |
scope | var屬性的作用域 | 否 | Page |
語法格式
<c:url
var="<string>"
scope="<string>"
value="<string>"
context="<string>"/>
例子
<c:url value="http://www.baidu.com" var="url" scope="session">
</c:url>
<c:url value="http://www.baidu.com" var="paramUrl">
<c:param name="userName" value="Super曉權"/>
<c:param name="pwd">123456</c:param>
</c:url>
<c:forEach> 標籤
屬性
<c:forEach>標籤有如下屬性:
屬性 | 描述 | 是否必要 | 默認值 |
---|---|---|---|
items | 要被循環的信息 | 否 | 無 |
begin | 開始的元素(0=第一個元素,1=第二個元素) | 否 | 0 |
end | 最後一個元素(0=第一個元素,1=第二個元素) | 否 | Last element |
step | 每一次迭代的步長 | 否 | 1 |
var | 代表當前條目的變量名稱 | 否 | 無 |
varStatus | 代表循環狀態的變量名稱 | 否 | 無 |
例子
<%
ArrayLisy<String> list =new ArrayList<String>();
list.add("一");
list.add("二");
list.add("三");
pageContext.setAttribute("list", list);
%>
<c:forEach items="${list }" var="ele" varStatus="vs">
${vs.index} ${vs.count } ${vs.first } <br/>
</c:forEach>
運行結果
<fmt:formatNumber>標籤
<fmt:formatNumber>標籤用於格式化數字,百分比,貨幣。
例子:
<fmt:formatNumber value="${num1}" pattern="0.000"/>
<fmt:formatNumber value="${num1}" pattern="#.####"/>
<fmt:formatDate> 標籤
<fmt:formatDate>標籤用於使用不同的方式格式化日期。
例子:
<c:set var="now" value="<%=new java.util.Date()%>" />
<fmt:formatDate pattern="yyyy-MM-dd" value="${now}" />