jsp 之JSTL

@[TOJSTL 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”)}

2 ${fn: indexOf (“2211221”,”21”)}

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

其输出结果为:
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”)}

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

其输出结果为:
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)}

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

其输出结果为:
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”)}

2 ${ fn: substringBefore (“mydata.txt”,”.txt”)}

其输出结果为:
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”)}

2 f n : s u b s t r i n g A f t e r ( “ m y d a t a . t x t ” , ” m y d a t a . ” ) &lt; b r / &gt; 其 输 出 结 果 为 : 1 c a t 2 t x t 18.10 f n : s p l i t 函 数 f n : s p l i t 函 数 用 于 将 源 字 符 串 拆 分 为 一 个 字 符 串 数 组 , 其 语 法 为 : f n : s p l i t ( S t r i n g s o u r c e , S t r i n g d e l i m i t e r ) − − − − S t r i n g [ ] 以 上 s o u r c e 参 数 指 定 源 字 符 串 , d e l i m i t e r 参 数 指 定 用 于 拆 分 源 字 符 串 的 分 隔 符 , 返 回 类 型 为 S t r i n g [ ] 。 如 果 在 源 字 符 串 中 不 包 含 d e l i m i t e r 参 数 指 定 的 分 隔 符 , 或 者 d e l i m i t e r 参 数 为 n u l l , 那 么 在 返 回 的 字 符 串 数 组 中 只 有 一 个 元 素 , 为 源 字 符 串 。 例 如 对 于 以 下 E L 表 达 式 : &lt; c : s e t v a l u e = ’ { fn: substringAfter (“mydata.txt”,” mydata.”)}&lt;br/&gt; 其输出结果为: 1 cat 2 txt 18.10 fn:split函数 fn:split函数用于将源字符串拆分为一个字符串数组,其语法为: fn: split (String source,String delimiter) ----String[] 以上source参数指定源字符串,delimiter参数指定用于拆分源字符串的分隔符,返回类型为String[]。如果在源字符串中不包含delimiter参数指定的分隔符,或者delimiter参数为null,那么在返回的字符串数组中只有一个元素,为源字符串。 例如对于以下EL表达式: &lt;c:set value=’ fn:substringAfter(mydata.txt,mydata.)<br/>1cat2txt18.10fn:splitfn:splitfn:split(Stringsource,Stringdelimiter)String[]sourcedelimiterString[]delimiterdelimiternullEL<c:setvalue={ fn: split (“www.mywebsite.org”,”.”)}’ var=”strs”/>
<c:forEach var=”token” item=”${strs}”>
t o k e n &lt; b r / &gt; &lt; / c : f o r E a c h &gt; 其 输 出 结 果 为 : w w w m y w e b s i t e o r g 再 例 如 对 于 以 下 代 码 : &lt; c : s e t v a l u e = ’ {token}&lt;br/&gt; &lt;/c:forEach&gt; 其输出结果为: www mywebsite org 再例如对于以下代码: &lt;c:set value=’ token<br/></c:forEach>wwwmywebsiteorg<c:setvalue={ 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”%>

out 1.${fn:escapeXml(" 表示粗体字") }
2.
3.${" 表示粗体字"}
对于out.jsp中的以下代码:
	1.${fn:escapeXml("<b>表示粗体字</b>") }<br/>

2.<c:out value=“表示粗体字” escapeXml=“true”></c:out>

3.${“表示粗体字”}

其输出结果为:
1.<b>表示粗体字</b>

2.<b>表示粗体字</b>

3.表示粗体字

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”%>

length <% int[] array = {1,2,3,4}; ArrayList list = new ArrayList(); list.add("one"); list.add("two"); list.add("three"); %> 数组长度:${fn:length(array)}
集合长度:${fn:length(list)}
字符串长度:${fn:length("Tomcat")}
通过浏览器方位length.jsp,得到的页面如图18-2所示。

图18-2 length.jsp
18.17 小结
Functions标签库提供了一些通用的EL函数,包括以下几种。
fn:contains函数:用于判断在源字符串中是否包含目标字符串。
fn:containsIgnoreCase函数:用于判断在源字符串中是否包含目标字符串,并且在判断时忽略大小写。
fn:startsWith函数:用于判断源字符串是否以指定的目标字符串开头。
fn: endsWith函数:用于判断源字符串是否以指定的目标字符串结尾。
fn:indexOf函数:用于在源字符串中查找目标字符串,并返回源字符串中最先与目标字符串匹配的第一个字符的索引。
fn:replace函数:用于把源字符串中的一部分替换为另外的字符串,并返回替换后的字符串。
fn:substring函数:用于获取源字符串中的特定子字符串。
fn:substringBefore函数:用于获取源字符串中指定子字符串之前的子字符串。
fn: substringAfter函数:用于获取源字符串中指定子字符串之后的子字符串
fn:split函数:用于将源字符串拆分为一个字符串数组。
fn:join函数:用于将源字符串数组中的所有字符串连接为一个字符串。
fn:toLowerCase函数:用于将源字符串中的所有字符改为小写。
fn: toUpperCase函数:用于将源字符串中的所有字符改为大写。
fn:trim函数:用于将源字符串中的开头和末尾的空格删除。
fn:escapeXml函数:用于将源字符串中的字符“<”、“>”、“””和“&”等转换为转义字符。C](这里写自定义目录标题)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值