1. 程式人生 > >Java_jsp.jstl.Function函式標籤庫.記錄

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.&lt;b&gt;表示粗體字&lt;/b&gt;<br/>

2.&lt;b&gt;表示粗體字&lt;/b&gt;<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