Java_jsp.jstl.Function函式標籤庫.記錄
JSTL Functions標籤庫
本書第12章的12.3節(定義和使用EL函式)介紹了EL函式的建立和使用方法。在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()方法的作用相似。
18.1fn: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。
18.2fn: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。
18.3 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。
18.4 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。
18.5 fn:indexOf函式
fn:indexOf函式用於在源字串中查詢目標字串,並返回源字串中最先與目標字串匹配的第一個字元的索引,如果在源字串中不包含目標字串,就返回-1,源字串中的第一個字元的索引為0。 fn:indexOf函式的語法為:
fn: indexOf (String source,String target) ----int
以上source引數指定源字串,target引數指定目標字串,返回型別為int。
例如對於以下EL表示式:
1 ${fn: indexOf (“Tomcat”,”cat”)}<br/>
2 ${fn: indexOf (“2211221”,”21”)} <br/>
3 ${fn: indexOf (“Tomcat”,”Mike”)} <br/>
其輸出結果為:
1 3
2 1
3 -1
18.6 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
18.7 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
18.8 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
18.9 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
18.10 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
18.11 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
18.12 fn:toLowerCase函式
fn:toLowerCase函式用於將源字串中的所有字元改為小寫,其語法為:
fn:toLowerCase(String source) -----String
以上source引數指定源字串,返回型別為String。
例如對於以下EL表示式:
fn:toLowerCase(“TomCat”)
其輸出結果為:
tomcat
18.13 fn:toUpperCase函式
fn: toUpperCase函式用於將源字串中的所有字元改為大寫,其語法為:
fn: toUpperCase (String source) -----String
以上source引數指定源字串,返回型別為String。
例如對於以下EL表示式:
fn: toUpperCase (“TomCat”)
其輸出結果為:
TOMCAT
18.14 fn:trim函式
fn:trim函式用於將源字串中的開頭和末尾的空格刪除,其語法為:
fn:trim(String source) ----String
以上source引數指定源字串,返回型別為String。
例如對於以下EL表示式:
fn:trim(“ Tomcat ”)
以上EL表示式的值為“Tomcat”。
18.15 fn:escapeXml函式
fn:escapeXml函式用於將源字串中的字元“<”、“>”、“””和“&”等轉換為轉義字元,本書第1章的1.2節(HTML簡介)介紹了轉義字元的概念。fn:escapeXml函式的行為與<c:out>標籤的escapeXml屬性為true時的轉換行為相同,fn:escapeXml函式的語法為:
fn:escapeXml(String source) ----String
以上source引數指定源字串,返回型別為String。
例程18-1的out.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頁面
18.16 fn:length函式
fn:length函式用於返回字串中的字元的個數,或者集合和陣列的元素的個數,其語法為:
fn:length(source) ---- int
以上source引數可以為字串、集合或者陣列,返回型別為int。
例程18-2的length.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
18.17 小結
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函式:用於返回字串中的字元的個數,或者集合和陣列的元素的個數
18.18 思考題
1、以下哪些屬於Functions標籤庫中的函式?(多選)
a、fn:contains b、fn:connect c、fn:length d、fn:split
2、以下哪個函式用於獲取源字串中的特定子字串?(單選)
a、fn:contains b、fn:indexOf c、fn:substring d、fn: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?(多選)
a、fn:join b、fn:indexOf c、fn:length d、fn:trim
答案:
1.acd 2.c 3.bcd 4.abc 5.c 6.bc