JSTL Functions標籤庫簡介,請注意區別JSTL核心標籤庫

  在JSTL Functions標籤庫中提供了一組常用的EL函數,主要用於處理字符串,在JSP中可以直接使用這些函數。

JSP文件中使用Functions標籤庫,要先通過taglib指令引入該標籤庫:

<%@taglib uri=”http://java.sun.com/jsp/jstl/functions” prefix="fn" %>.

本章將介紹Functions標籤庫中常用的16個函數的用法,這些函數的名字及作用與java.lang.String類中的相應方法很相似。例如:fn:indexOf函數與類String類的indexOf()方法的作用相似,fn:substring函數與String類的substring()方法的作用相似。

fn:contains函數

fn:contains函數用於判斷在源字符串中是否包含目標字符串,其語法爲:

fn:contains(String source,String target) -------boolean;

以上source參數指定源字符串,target參數指定目標字符串,返回類型爲boolean

例如對於以下EL表達式:

${fn:contains(“Tomcat”,”cat”)}

${fn:contains(“Tomcat”,”CAT”)}

第一個EL表達式的值爲true,第二個EL表達式的值爲false

fn:containsIgnoreCase函數

fn:containsIgnoreCase函數用於判斷在源字符串中是否包含目標字符串,並且在判斷時忽略大小寫,其語法爲:

fn: containsIgnoreCase (String source,String target) -------boolean;

以上source參數指定源字符串,target參數指定目標字符串,返回類型爲boolean

例如對於以下EL表達式:

${fn: containsIgnoreCase (“Tomcat”,”CAT”)}

${fn: containsIgnoreCase (“Tomcat”,”Mike”)}

第一個EL表達式的值爲true,第二個EL表達式的值爲false

fn:startsWith函數

fn:startsWith函數用於判斷源字符串是否以指定的目標字符串開頭,其語法爲:

fn:startsWith(String source,String target) ----boolean

以上source參數指定源字符串,target參數指定目標字符串,返回類型爲boolean

例如對於以下EL表達式:

${fn: startsWith (“Tomcat”,”Tom”)}

${fn: startsWith (“Tomcat”,”cat”)}

第一個EL表達式的值爲true,第二個EL表達式的值爲false

fn:endsWith函數

fn: endsWith函數用於判斷源字符串是否以指定的目標字符串結尾,其語法爲:

fn: endsWith (String source,String target) ----boolean

以上source參數指定源字符串,target參數指定目標字符串,返回類型爲boolean

例如對於以下EL表達式:

${fn: endsWith (“Tomcat”,”cat”)}

${fn: endsWith (“Tomcat”,”Tom”)}

第一個EL表達式的值爲true,第二個EL表達式的值爲false

fn:indexOf函數

fn:indexOf函數用於在源字符串中查找目標字符串,並返回源字符串中最先與目標字符串匹配的第一個字符的索引,如果在源字符串中不包含目標字符串,就返回-1,源字符串中的第一個字符的索引爲0fn:indexOf函數的語法爲:

fn: indexOf (String source,String target) ----int

以上source參數指定源字符串,target參數指定目標字符串,返回類型爲int

例如對於以下EL表達式:

${fn: indexOf (“Tomcat”,”cat”)}<br/>

${fn: indexOf (“2211221”,”21”)} <br/>

${fn: indexOf (“Tomcat”,”Mike”)} <br/>

其輸出結果爲:

1     3

2     1

3     -1

 fn:replace函數

fn:replace函數用於把源字符串中的一部分替換爲另外的字符串,並返回替換後的字符串。fn:replace函數的語法爲:

fn: replace (String source,String before,String after) ----String

以上source參數指定源字符串,before參數指定源字符串中被替換的子字符串,after參數指定用於替換的子字符串,返回類型爲String

例如對於以下EL表達式:

1 ${ fn: replace(“TomcAt”,”cAt”,”cat”)}<br/>

2 ${ fn: replace(“2008/1/9”,”/”,”-”)}<br/>

其輸出結果爲:

1 Tomcat

2 2008-1-9

fn:substring函數

fn:substring函數用於獲取源字符串中的特定子字符串,它的語法爲:

fn:substring(String source,int beginIndex,int endIndex) ------String

以上source參數指定源字符串,beginIndex參數表示子字符串中的第一個字符在源字符串中的索引,endIndex參數表示子字符串的最後一個字符在源字符串中的索引加1,返回類型爲String,源字符串中的第一個字符的索引爲0

例如對於以下EL表達式:

1 ${ fn: substring (“Tomcat”,0,3)}<br/>

2 ${ fn: substring (“Tomcat”,3,6)}<br/>

其輸出結果爲:

1 Tom

2 cat

fn:substringBefore函數

fn:substringBefore函數用於獲取源字符串中指定子字符串之前的子字符串,其語法爲:

fn:substringBefore(String source,String target) ----String

以上source參數指定源字符串,target參數指定子字符串,返回類型爲String。如果在源字符串中不包含特定子字符串,就返回空字符串。

例如對於以下EL表達式:

1 ${ fn: substringBefore (“Tomcat”,”cat”)}<br/>

2 ${ fn: substringBefore (“mydata.txt”,”.txt”)}<br/>

其輸出結果爲:

1 Tom

2 mydata

fn:substringAfter函數

fn: substringAfter函數用於獲取源字符串中指定子字符串之後的子字符串,其語法爲:

fn: substringAfter (String source,String target) ----String

以上source參數指定源字符串,target參數指定子字符串,返回類型爲String。如果在源字符串中不包含特定子字符串,就返回空字符串。

例如對於以下EL表達式:

1 ${ fn: substringAfter (“Tomcat”,”Tom”)}<br/>

2 ${ fn: substringAfter (“mydata.txt”,” mydata.”)}<br/>

其輸出結果爲:

1 cat

2 txt

 fn:split函數

fn:split函數用於將源字符串拆分爲一個字符串數組,其語法爲:

fn: split (String source,String delimiter) ----String[]

以上source參數指定源字符串,delimiter參數指定用於拆分源字符串的分隔符,返回類型爲String[]。如果在源字符串中不包含delimiter參數指定的分隔符,或者delimiter參數爲null,那麼在返回的字符串數組中只有一個元素,爲源字符串。

例如對於以下EL表達式:

<c:set value=’${ fn: split (“www.mywebsite.org”,”.”)}’ var=”strs”/>

<c:forEach var=”token” item=”${strs}”>

${token}<br/>

</c:forEach>

其輸出結果爲:

www

mywebsite

org

再例如對於以下代碼:

<c:set value=’${ fn: split (“www.mywebsite.org”,”-”)}’ var=”strs”/>

${strs[0]}

其輸出結果爲:

www.mywebsite.org

fn:join函數

fn:join函數用於將源字符串數組中的所有字符串連接爲一個字符串,其語法爲:

fn:join(String source[],String separator) ----String

以上source參數指定源字符串數組,separator參數指定用於連接源字符串數組中的各個字符串的分隔符,返回類型爲String

例如對於以下代碼:

<%

String strs[] = {“www”,”mywebsite”,”org”};

%>

<c:set value=”<%=strs%>” var=”strs”/>

${fn:join(strs,”.”)}

其輸出結果爲:

www. mywebsite. org

fn:toLowerCase函數

fn:toLowerCase函數用於將源字符串中的所有字符改爲小寫,其語法爲:

fn:toLowerCase(String source)  -----String

以上source參數指定源字符串,返回類型爲String

例如對於以下EL表達式:

fn:toLowerCase(“TomCat”)

其輸出結果爲:

tomcat

fn:toUpperCase函數

fn: toUpperCase函數用於將源字符串中的所有字符改爲大寫,其語法爲:

fn: toUpperCase (String source)  -----String

以上source參數指定源字符串,返回類型爲String

例如對於以下EL表達式:

fn: toUpperCase (“TomCat”)

其輸出結果爲:

TOMCAT

fn:trim函數

fn:trim函數用於將源字符串中的開頭和末尾的空格刪除,其語法爲:

fn:trim(String source) ----String

以上source參數指定源字符串,返回類型爲String

例如對於以下EL表達式:

fn:trim(“   Tomcat   ”)

以上EL表達式的值爲“Tomcat”。

fn:escapeXml函數

fn:escapeXml函數用於將源字符串中的字符“<”、“>”、“””和“&”等轉換爲轉義字符,本書第1章的1.2節(HTML簡介)介紹了轉義字符的概念。fn:escapeXml函數的行爲與<c:out>標籤的escapeXml屬性爲true時的轉換行爲相同,fn:escapeXml函數的語法爲:

fn:escapeXml(String source) ----String

以上source參數指定源字符串,返回類型爲String

例程18-1out.jsp演示了fn:escapeXml函數的用法。

例程18-1 out.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

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

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>out</title>

</head>

<body>

1.${fn:escapeXml("<b>表示粗體字</b>") }<br/>

2.<c:out value="<b>表示粗體字</b>" escapeXml="true"></c:out><br/>

3.${"<b>表示粗體字</b>"}<br/>

</body>

</html>

 

對於out.jsp中的以下代碼:

1.${fn:escapeXml("<b>表示粗體字</b>") }<br/>

2.<c:out value="<b>表示粗體字</b>" escapeXml="true"></c:out><br/>

3.${"<b>表示粗體字</b>"}<br/>

其輸出結果爲:

1.<b>表示粗體字</b><br/>

2.<b>表示粗體字</b><br/>

3.<b>表示粗體字</b><br/>

out.jsp的輸出結果在瀏覽器中的顯示效果如圖18-1所示。

 

18-1 out.jsp頁面

fn:length函數

fn:length函數用於返回字符串中的字符的個數,或者集合和數組的元素的個數,其語法爲:

fn:length(source) ---- int

以上source參數可以爲字符串、集合或者數組,返回類型爲int

例程18-2length.jsp演示了fn:length函數的用法。

例程18-2 length.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

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

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

<%@page import="java.util.ArrayList"%>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>length</title>

</head>

<body>

<%

int[] array = {1,2,3,4};

ArrayList list = new ArrayList();

list.add("one");

list.add("two");

list.add("three");

%>

<c:set value="<%=array%>" var="array"></c:set>

<c:set value="<%=list%>" var="list"></c:set>

數組長度:${fn:length(array)}<br/>

集合長度:${fn:length(list)}<br/>

字符串長度:${fn:length("Tomcat")}<br/>

</body>

</html>

通過瀏覽器方位length.jsp,得到的頁面如圖18-2所示。

 

18-2 length.jsp

小結

Functions標籤庫提供了一些通用的EL函數,包括以下幾種。

l fn:contains函數:用於判斷在源字符串中是否包含目標字符串。

l fn:containsIgnoreCase函數:用於判斷在源字符串中是否包含目標字符串,並且在判斷時忽略大小寫。

l fn:startsWith函數:用於判斷源字符串是否以指定的目標字符串開頭。

l fn: endsWith函數:用於判斷源字符串是否以指定的目標字符串結尾。

l fn:indexOf函數:用於在源字符串中查找目標字符串,並返回源字符串中最先與目標字符串匹配的第一個字符的索引。

l fn:replace函數:用於把源字符串中的一部分替換爲另外的字符串,並返回替換後的字符串。

l fn:substring函數:用於獲取源字符串中的特定子字符串。

l fn:substringBefore函數:用於獲取源字符串中指定子字符串之前的子字符串。

l fn: substringAfter函數:用於獲取源字符串中指定子字符串之後的子字符串

l fn:split函數:用於將源字符串拆分爲一個字符串數組。

l fn:join函數:用於將源字符串數組中的所有字符串連接爲一個字符串。

l fn:toLowerCase函數:用於將源字符串中的所有字符改爲小寫。

l fn: toUpperCase函數:用於將源字符串中的所有字符改爲大寫。

l fn:trim函數:用於將源字符串中的開頭和末尾的空格刪除。

l fn:escapeXml函數:用於將源字符串中的字符“<”、“>”、“””和“&”等轉換爲轉義字符。

l fn:length函數:用於返回字符串中的字符的個數,或者集合和數組的元素的個數

思考題

1、以下哪些屬於Functions標籤庫中的函數?(多選)

a、fn:contains b、fn:connect cfn:length dfn:split

2、以下哪個函數用於獲取源字符串中的特定子字符串?(單選)

afn:contains bfn:indexOf cfn:substring dfn:trim

3、以下哪些EL表達式的值爲true?(多選)

a${fn:contains(“Tomcat”,”CAT”)}

b${fn:contains(“Tomcat”,”cat”)}

c${fn:containsIgnoreCase(“Tomcat”,”CAT”)}

d${fn:startsWith(“Tomcat”,”T”)}

4、以下哪些EL表達式的值爲cat?(多選)

a${fn:replace(“cAt”,”A”,”a”)}

b${fn:substring(“Tomcat”,”3”,”6”)}

c${fn:substringAfter(“Tomcat”,”Tom”)}

d${fn:indexOf(“Tomcat”,”cat”)}

5、運行以下這段代碼會出現什麼情況?(單選)

<%

String strs[] = {“www”,”mywebsite”,”org”};

%>

${fn:join(strs,”.”)}

a、輸出“www. mywebsite.org

b、輸出“wwwmywebsiteorg
c、沒有任何輸出結果

d、拋出異常,命名變量strs不存在

6、以下哪些函數的返回類型爲int?(多選)

afn:join bfn:indexOf cfn:length dfn:trim

 

答案:

1.acd 2.c 3.bcd 4.abc 5.c 6.bc

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章