天天看點

JSTL标簽手冊

1.JSTL1.1标簽庫

核心标簽庫,國際化标簽庫,資料庫标簽庫,XML标簽庫,函數标簽庫

2.EL表達式的預設變量

(1)pageScope,requestScope,sessionScope,applicationScope,

這個4個變量包含Scope作用範圍得參數集合,相當于儲存在java.util.Map種得某個參數

(2)預設變量param和paramValues

param表明請求包含的參數為單一控件,paramValues表明請求包含的參數為控件數組

(3)預設變量header和headerValues

包含請求參數頭部資訊得集合,header變量表示單一頭部資訊,headerValue則表示數組型得頭部資訊

(4)預設變量cookie

cookie集合,集合中得每個對象對應javax.servlet.http.Cookie

(5)預設變量initParam包含所有應用程式初始化參數得集合

(6)預設變量pageContext

用來提供通路不同得請求參數

EL表達式操作符

empty:用來對一個空變量進行判斷:null,一個空String,空數組,空map,沒有條目得Collection集合

func:調用方法,func是方法名,args是參數,可以沒有,或者有一個,多個參數,參數間用都好隔開

3.JSTL Core标簽庫

多用途核心标簽:<c:out><c:set><c:remove><c:catch>

條件控制标簽<c:if><c:choose><c:when><c:otherwise>

循環控制标簽<c:forEach><c:forToken>

URL相關标簽<c:import><c:url><c:redirect><c:param>

<c:out>:

<c:out value="{$sessonScope.anyValue}" default="no value" excapeXml="false" />

從Session查找名為anyValue的參數,并顯示在頁面,若咩有找到則顯示no value

xcapeXml當設定為true時會主動更換特殊字元,比如“&lt;&gt;&amp;”,預設為true

<c:set>:

<c:set value="this is andy" var="oneString" />

${oneString}

将名為oneString得變量指派為this is andy,其作用範圍時page

target:被指派的javaBean執行個體名

property,javaBean屬性名

scope:作用範圍,預設為page

<c:remove>:

<c:remove var="sampleValue" scope="session" />

<c:catch>:

<c:catch var="err">

${param.smpleSingleValue[9] == 3}

</c:catch>

${err}

從變量var的err中得到異常内容

<c:if>

<c:if test="{paramValue.sampleValue[2] == 12}" var"visits" />

It is 12

</c:if>

${visits}

将判斷得結果儲存在visits中

<c:choose><c:when><c:otherwise>:

<c:choose>

<c:when test="$paramvalues.sampleValue[2] == 11" />

not 12 not 13,it is 11

</c:when>

<c:when test="$paramvalues.sampleValue[2] == 12" />

not 11 not 13,it is 12

</c:when>

<c:when test="$paramvalues.sampleValue[2] == 13" />

not 11 not 12,it is 13

</c:when>

<c:otherwise>

not 11 12 13

</c:otherwise>

</c:choose>

<c:forEach>:

<c:forEach items="${seesionScope.arrayList}" var"arrayListI" />

${arrayListI}

</c:forEach>

var用來接收集合的對象,該循環的變量名

<c:forTokens>:

<c:forTokens items="aa,bb,cc,dd" begin="0" end="2" step"2" delims="," var="aValue" />

${aValue}

</c:forTokens>

結果時"aa cc",跳兩格,截取逗号前面的字元

delims分隔符,

varStatus顯示循環狀态得變量

<c:import>

<c:import url="/MyHtml.html" var="thisPage" />在同一個Context下導入

<c:import url="/MyHtml.html" context="/sample2" var="thisPage" />在不同Context下導入

<c:import url="www.sample.com/MyHtml.html" var="thisPage" />導入任意一個URL

charEncoding導入頁面的字元集

<c:url>

<c:import url="/MyHtml.html" var="urlPage" />

<a href="${urlPage}" target="_blank" rel="external nofollow" >Link</a>

<c:redirect>:

<c:redirect url="/MyHtml.html" />

一般和<c:if>等标簽一起使用

<c:param>:

<c:redirect url="/MyHtml.html" />

<c:param name="userName" value="RW">

</c:redirect>

傳遞參數

4.JSTL XML processing标簽庫

XML核心标簽庫:<x:parse><x:out><x:set>

XML流控制标簽:<x:if><c:choose><c:when><c:otherwise>

XML轉換标簽<x:transform><x:param>

解析XML檔案的<x:parse>

<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml">

<x:parse var="xmlFileValue" doc="${xmlFile}">

varDom:制定儲存得變量為org.w3c.dom.Document接口類型

scopeDom:org.w3c.dom.Document接口類型的作用範圍

filter:該屬性必須為org.xml.sax.XMLFilter類的一個執行個體,可以使用EL表達式傳入,将對XML檔案做過濾得到自身需要的部分

<x:out>

<x:parse var="xmlFileValue" doc="${xmlFile}" />

name:<x:out select="$xmlFileValue/xml-body/name" /><br>

password:<x:out select="$xmlFileValue/xml-body/password" /><br>

age:<x:out select="$xmlFileValue/xml-body/age" /><br>

加上$作為XPath表達式得開頭,select中的表達式将從xml-body根元素下得各個子元素中取得屍體内容

<x:set>:

<c:set value="this is andy" var="oneString" />

<x:if>

<x:if test="{paramValue.sampleValue[2] == 12}" var"visits" />

It is 12

</x:if>

${visits}

将判斷得結果儲存在visits中

<x:choose><c:when><c:otherwise>:

<x:choose>

<x:when test="$paramvalues.sampleValue[2] == 11" />

not 12 not 13,it is 11

</x:when>

<x:when test="$paramvalues.sampleValue[2] == 12" />

not 11 not 13,it is 12

</x:when>

<x:when test="$paramvalues.sampleValue[2] == 13" />

not 11 not 12,it is 13

</x:when>

<x:otherwise>

not 11 12 13

</x:otherwise>

</x:choose>

<x:forEach>:

<x:forEach items="${seesionScope.arrayList}" var"arrayListI" />

${arrayListI}

</x:forEach>

var用來接收集合的對象,該循環的變量名

格式化XML顯示資料得<x:transform>标簽

<x:transform>标簽允許使用XSLT(轉換XML格式的語言)為頁面得顯示資料做格式化的處理

<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml">

<c:set var="xsltdoc">

<?xml version="1.0" ?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">

<xsl:apply-templates />

</xsl:template>

<xsl:template match="xml-body">

<html>

<head></head>

<body>

UserName:

<xsl:value-of select="name" />

PassWord:

<xsl:value-of select="password" />

<xsl:value-of select="age" />

</body>

</html>

</xsl:template>

</xsl:stylesheet>

</c:set>

<x:transform xslt="${xsltdoc}" doc="${xmlFile}">

将XML檔案儲存的資料資訊利用<c:import>儲存在"xmlFile"中,然後使用<c:set>标簽儲存在一個XSLT得源到"xsltdoc",最後通過<x:tranform>格式化XML檔案得資料顯示在頁面上

<x:param>:

<x:redirect url="/MyHtml.html" />

<x:param name="userName" value="RW">

</x:redirect>

傳遞參數

5.I18N fromattion标簽庫

國際化核心标簽:<fmt:setLocale><fmt:bundle><fmt:setBundle><fmt:message><fmt:param><fmt:requestEncoding>

格式化标簽:<fmt:timeZone><fmt:setTimeZone><fmt:formatNumber><fmt:parseNumber><fmt:formatDate>

<fmt:parseDate>

用于設定本地化環境的<fmt:setLocale>

<fmt:setLocale value="zh_TW">

用于資源檔案綁定的<fmt:bundle><fmt:setBundle>标簽

<fmt:bundle>标簽将資源配置檔案綁定于标簽體中得顯示

<fmt:setBundle>标簽允許将資源配置檔案儲存為一個變量,之後的工作可以根據該變量來進行

<fmt:setBundle basename="applicationMessage" var="applicationBundle" />

該執行個體将會查找一個名為applicationMessage_zh_CN.properties的資源配置檔案,來作為顯示Resource标簽

basename:指定資源配置檔案,隻需要指定檔案名而無須擴充名,是兩組标簽的共有屬性

用于顯示資源配置檔案資訊的<fmt:message>

<fmt:setBundle basename="applicationMessage" var="applicationBundle" />

<fmt:bundle baseanme="applicationAllMessage">

<fmt:message key="userName" />

<p>

<fmt:message key="password" bundle="${applicationBundle}" />

</fmt:bundle>

第一個<fmt:message>标簽将使用"applicationAllMessage"資源配置檔案中”鍵“為"userName"的資訊顯示

第二個<fmt:message>标簽雖然被定義在<fmt:bundle>标簽體内,但是它使用了bundle屬性,是以将指定之前由<fmt:setBundle>标簽儲存的"applicationMessage"資源配置檔案,該”鍵“為"passWord"的資訊顯示

用于參數傳遞得<fmt:param>,隻有value屬性

用于為請求設定字元編碼得<fmt:requestEncoding>标簽,隻有value屬性

用于設定失去得<fmt:timeZone><fmt:setTimeZone>

<fmt:timeZone>使得在其标簽體内得工作可以用該失去設定

<fmt:setTimeZone>将失去設定儲存為一個變量

用于格式化數字得<fmt:formatNumber>

<fmt:formatNumber value="1000.888" type="currency" var="money">

type:格式化類型,由currency(貨币),number(數字),percent(百分比)

pattern:格式化模式

var:結果儲存變量

用于解析數字得<fmt:parseNumber>

<fmt:parseNumber value="15%" type="precent" var="num">

結果是0.15

type:解析格式化的類型

用于格式化日期的<fmt:formatDate>

timeZone:指定格式化日期的時區

和<fmt:timeZone><fmt:setTimeZone>一起用

用于解析日期的<fmt:parseDate>

<fmt:parseDate><fmt:parseNumber>盡量少用,替代工作得地方應該在伺服器端表示層的後段,比如在servlet

6.Database access标簽庫

用于設定資料源得<sql:setDataSource>

現在這個标簽已不用,因為違反了MVC得規範

7.functions标簽

為EL表達式語句提供了許多更有用得功能

長度函數:fn:length

字元串處理函數:fn:contains,fn:containsIgnoreCase,fn:endsWith,fn:escapeXml,fn:indexOf,fn:join,

fn:replace,fn:split,fn:startsWith,fn:substring,fn:substringAfter,fn:substringBefore,fn:toLowerCase,fn:toUpperCase,fn:trim

fn:length

${fn:length(sessionScope.arrayList1)}

參數為input,将計算通過該屬性傳入的對象長度,該對象應該為集合類型或String類型,其傳回結果是一個int類型的值,

判斷函數fn:contains

判斷源字元串是否含有子字元串,傳回結果是boolean類型的值

contains("string","substring"),兩個都是stirng類型

${fn:contains("ABC","a")}傳回false

${fn:contains("ABC","A")}傳回ture

fn:containslgnoreCase函數

和fn:contains差別是fn:containslgnoreCase函數的子字元串忽略大小寫

${fn:ontainslgnoreCase("ABC","a")}傳回ture

${fn:ontainslgnoreCase("ABC","A")}傳回ture

詞頭判斷fn:startsWith

${fn:startsWith("ABC","ab")}傳回false

${fn:startsWith("ABC","AB")}傳回ture

詞尾判斷fn:endsWith

字元實體轉換函數fn:escapeXml

用于将所有特殊字元轉化為字元實體碼,傳回一個string類型

字元比對函數fn:indexOf

${fn:indexOf("ABC","aBC")}傳回-1

${fn:indexOf("ABC","BC")}傳回1

傳回-1或1

分隔符fn:join

<% String[] stringArray = ("a","b","c"); %>

<% request.getSession().setAttribute("stringArray",stringArray); %>

${fn:join(sessionScope.stringArray,",")}

定義數組并防止到Session中,然後通過Session得到該字元串數組,使用fn:join函數并傳入分隔符";",得到的結果為"a;b;c"

替換函數fn:replace

${fn:replace("ABC","A","B")}

"ABC"是原字元串,"A"是被替換的字元,"B"替換後的字元

分隔符轉換數組函數fn:split

${fn:split("A,B,C",",")}

将"A,B,C"字元串轉換為數組{A,B,C}

字元串截取函數fn:substring函數

${fn:substring("ABC","1","2")}

從0開始

截取結果為B

定位到結束截取字元串函數fn:substringAfter函數

${fn:substringAfter("ABC","BC")},結果為D(不包括BC)

允許截取源字元串中某個字元串開始到結束的所有字元

起始到定位截取字元串函數fn:substringBefore

${fn:substringAfter("ABC","BC")}結果為A(不包括BC,BC前的數)

小寫轉換函數fn:toLowerCase

${fn:toLowerCase("ABC")}

大寫轉換函數fn:toUpperCase

${fn:toLowerCase("abc")}

空格删除函數fn:trim函數

${fn:trim("AB C ")}D

轉換結果為"AB CD",隻删除詞尾得空格而不是全部,

8.<bean:define>,<bean:write>被EL表達式替換

<bean:cookie><bean:header><bean:parameter><bean:write>被EL表達式替換

<bean:include>被<c:import>替換

<bean:message>被<fmt:bundle><fmt:setBundle>,<fmt:message>合作替換

所有判斷标簽(logic,bean)被EL表達式和<c:if>替換

<logic:iterate>被<c:forEach>和EL表達替換

<logic:redirect>被<c:redirect>和<c:param>替換