javascript
JSP——JSTL语法总结
一、JSTL概述:
1、什么是JSTL?
- JSTL 全名為 JavaServer Pages Standard Tag Library, 它主要提供給開發人員一個標準通用的標簽函數庫。
2、JSTL的作用:
- Web程序開發人員能夠利用JSTL和EL來開發Web程序,取代傳統直接在頁面上嵌入Java程序的做法,以提高程序可讀性、維護性和方便性。
3、JSTL所提供的標簽函數庫主要分為五大類:
其中核心標簽庫是最常用的,這里只總結下核心標簽庫。
4、使用標簽的方法:
<%@taglib tagdir/uri="標簽位置" prefix="縮略名"%>| 核心標簽庫 | c | http://java.sun.com/jsp/jstl/core | <c:out> |
| SQL標簽庫 | sql | http://java.sun.com/jsp/jstl/sql | <sql:query> |
| I18N 標簽庫 | fmt | http://java.sun.com/jsp/jstl/fmt | <fmt:formatDate> |
| XML標簽庫 | xml | http://java.sun.com/jsp/jstl/xml | <x:forBach> |
| 函數標簽庫 | fn | http://java.sun.com/jsp/jstl/functions | <fn:split> |
例 (使用核心標簽庫):
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html>二、JSTL核心標簽庫:
JSTL的核心標簽庫(Core)主要操作有:表達式操作、流程控制和迭代操作。
1、表達式操作:
表達式操作主要有四種:<c:out>、<c:set>、<c:remove>、<c:catch>
1. <c:out>
- <c:out>主要用來顯示數據的內容,等效于 <%= scripting-language %>
例:
Hello ! <c:out value="${username}" />語法:
1:沒有本體(body)內容
2:有本體內容
<c:out value="value" [escapeXml="{true|false}"]>默認值</c:out>其中
2. <c:set>
- <c:set>用來將變量儲存至 JSP 范圍中或 JavaBean 的屬性中。
語法:
1:將value的值存至范圍為scope的varName變量之中
若value為null時:將由儲存變量改為移除變量
2:將本體內容存至范圍為scope的varName變量之中
<c:set var="varName" [scope="{ page|request|session|application }"]> 本體內容 </c:set>3:將 value 的值儲存至 target 對象的屬性中
< c:set value="value" target=“${target}" property="propertyName" />若value為null時,則property 指定的屬性為null
4:將本體內容的數據儲存至 target 對象的屬性中
<c:set target="target" property="propertyName"> 本體內容 </c:set>target常見為JavaBeans類型
target為null或不是JavaBean類型,將產生異常。
其中
3. <c:remove>
<c:remove>主要用來移除變量
語法:
<c:remove var="varName" [scope="{ page|request|session|application }"] />
若不設定 scope,則<c:remove>將會從 Page、 Request、Session 及 Application 中順序尋找是否存在名稱為 var值 的數據,若能找到時, 則將它移除掉,反之則不會做任何的事情。
4、<c:catch>
<c:catch>主要用來處理產生錯誤的異常狀況,并且將錯誤信息儲存起來。
語法:
<c:catch [var="varName"] > 欲抓取錯誤的部分 </c:catch><c:catch>將可能發生錯誤的部分放在<c:catch>和</c:catch>之間。如果真的發生錯誤,可以將錯誤信息儲存至varName變量中,例如:
<c:catch var="message"> 可能發生錯誤的部分 </c:catch>當錯誤發生在<c:catch>和</c:catch>之間時,只有<c:catch>和</c:catch>之間的程序會被中止忽略,但整個網頁不會被中止。
2、程序流程控制:
1. <c:if>
語法 1:沒有本體內容(body)
<c:if test="testCondition" var="varName"[scope="{page|request|session|application}"]/>語法 2:有本體內容
<c:if test="testCondition" [var="varName"][scope="{page|request|session|application}"]> 具體內容 </c:if>屬性:
2. <c:choose>
- <c:choose>本身只當做 <c:when> 和 <c:otherwise> 的父標簽。
語法:
<c:choose> 本體內容( <when> 和 <otherwise> ) </c:choose><c:choose>的本體內容只能有:
- 空白
- 1 或多個 <c:when>
- 0 或1個 <c:otherwise>
說明:
使用<c:when>和<c:otherwise>做流程控制時,兩者都必須為<c:choose>的子標簽。
即:
3. <c:when>
- <c:when> 表示當滿足某一條件時執行本體內容。
語法:
<c:when test="testCondition" > 本體內容 </c:when>限制:
- <c:when>必須在<c:choose>和</c:choose>之間。
- 在同一個<c:choose>中,<c:when>必須在<c:otherwise>之前。
說明:
- <c:when>必須有 test 屬性,當 test 中的表達式結果為 true 時,則會執行本體內容;如果為false 時,則不會執行。
3. <c:otherwise>
- 在同一個 <c:choose> 中,當所有 <c:when> 的條件都沒有成立時,則執行 <c:otherwise> 的本體內容 。
語法:
<c:otherwise> 本體內容 </c:otherwise>限制:
- <c:otherwise> 必須在 <c:choose> 和 </c:choose>之間
- 在同一個 <c:choose> 中時,<c:otherwise> 必須為最后標簽
說明:
- 在同一個 <c:choose> 中,假若所有 <c:when> 的 test 屬性都不為 true 時,則執行<c:otherwise> 的本體內容
3、迭代操作:
1. <c:forEach> :
- <c:forEach> 為循環控制,它可以將集合(Collection)中的成員循序瀏覽一遍。運行方式為當條件符合時,就會持續重復執行<c:forEach>的本體內容 。
語法 1:迭代一集合對象的所有成員
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> 本體內容 < /c:forEach>語法 2:迭代指定的次數
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"] > 本體內容 </c:forEach>其中
限制:
- 假若有 begin 屬性時,begin 必須大于等于 0。
- 假若有 end 屬性時,必須大于 begin。
- 假若有 step 屬性時,step 必須大于等于 0。
Null 和 錯誤處理:
- 假若items為null時,則表示為一空的集合對象。
- 假若begin大于或等于items大小時,則迭代不運算。
說明:
- 如果要循序瀏覽一個集合對象,并將它的內容顯示出來,就必須有 items 屬性。
2. <c:forTokens>:
- <c:forTokens> 用來瀏覽一字符串中所有的成員,其成員是由定義符號(delimiters)所分隔的。
語法:
<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"][varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"] >本體內容 </c:forTokens>其中:
限制:
- 假若有begin屬性時,begin 必須大于等于 0。
- 假若有end屬性時,必須大于 begin。
- 假若有step屬性時,step 必須大于等于 0。
Null 和 錯誤處理:
- 若items為null時,則表示為一空的集合對象。
- 若begin大于或等于items的大小時,則迭代不運算。
說明:
- items的內容必須為字符串;而 delims 是用來分割items中定義的字符串之字符。
例子:
1、使用核心標簽庫輸入輸出方法:
2、使用核心標簽庫訪問JavaBean
- 創建JavaBean類Student,包含屬性name和age。創建JSP頁面,在其中訪問JavaBean,且使用核心標簽庫設置屬性值和讀取屬性值。
🆗,JSTL的語法知識大致就這么多。
總結
以上是生活随笔為你收集整理的JSP——JSTL语法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP——JavaBean应用
- 下一篇: JSP动作和内置对象