JSTL Functions标签库

在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()方法的作用相似。

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。

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。

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。

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。

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

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

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

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

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

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

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

12 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

14 fn:trim函数

fn:trim函数用于将源字符串中的开头和末尾的空格删除,其语法为:

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

以上source参数指定源字符串,返回类型为String。

例如对于以下EL表达式:

fn:trim(“   Tomcat   ”)

以上EL表达式的值为“Tomcat”。

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页面

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

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函数:用于返回字符串中的字符的个数,或者集合和数组的元素的个数

jstl与el结合常见用法的更多相关文章

  1. 第一章 EL表达式常见用法

    el最常用的几种使用场景: 从配置文件中读取属性 缺失值情况下,配置默认值 el内部字符串使用String的方法 三目运算符 正则表达式 注入系统属性(system properties) 调用系统原 ...

  2. 【转】JSP中的JSTL与EL表达式用法及区别

    对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念JSTL一般要配合EL ...

  3. jsp中的JSTL与EL表达式用法及区别

    对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念 JSTL一般要配合E ...

  4. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  5. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总

    一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出.       1,JSTL标签总结: a).JSTL标签有什么用?          JSTL是由JCP(Java Commu ...

  6. JSTL、EL、ONGL、Struts标签的区别与使用

     一.JSTL 来源 我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题: jsp维护难度增加 出事提示不明确,不容易提示 分工不明确等 解决上面的问题可以 ...

  7. jstl,el表达式

    在上一篇中,我们写了将数据传到jsp页面,在jsp页面进行展示数组,但是我们发现,在jsp页面写代码是一件很烦的事,一个循环要拆成两部分,例如for循环,在例如if语句: <%int a=22; ...

  8. JSTL与EL与OGNL

    springMVC使用JSTL与EL表达式: spring MV默认的jsp页面的标签就是JSTL,而struts2默认的是OGNL标签. struts2 使用OGNL与EL表达式:OGNL用stru ...

  9. JSTL和EL简介

    EL Expression Language,表达式语言,通过操作存在于PageContext等的数据,实现JSP的编写更加简单,单纯使用EL不用引入jar包,只要容器支持即可. EL的隐含对象 EL ...

随机推荐

  1. 在全局对象(不是指针)的构造函数里不要对std集合做太多操作

    写MaxvisionOnvif的时候,我用个宏把每个Command类注册到了CommandBuilder里面,通过全局对象初始化实现的,如下: void CommandBuilder::Registe ...

  2. 【MariaDB】MariaDB vs MySQL - 特性

    原文链接: https://mariadb.com/kb/en/mariadb-vs-mysql-features/ xiaomo译------ 支持更多的存储引擎 除了标配的MyISAM, BLAC ...

  3. 并行输入\输出控制器之我见(PIO)

    中断信号FIQ及IRQ0到IRQn一般通过PIO控制器复用.但是,由于PIO控制器对于输入无效且中断线(FIQ或IRQ)仅作为输入,因此不必为中断分配I/0线.          电源管理控制器控制P ...

  4. N天学习一个linux命令之ping

    用途 检测主机是否可到达,也就是说,目标主机是否可以联网,还可以用于检测网速.通过发送ICMP ECHO_REQUEST数据包检测. 用法 ping [options] destination 常用选 ...

  5. 《简明Python编程》核心笔记(1~5章)

    2014年8月20日 <简明Python编程>核心笔记  (1~5章) 昨天和今天两天时间里.把<简明Python编程>这一本书学完了,包含书上的代码.现把核心笔记记录下来,以 ...

  6. cocos2d js ClippingNode 制作标题闪亮特效

    1.效果图: 之前在<Android 高仿 IOS7 IPhone 解锁 Slide To Unlock>中制作了文字上闪亮移动的效果,这次我们来看下怎样在cocos2d js 中做出类似 ...

  7. IOS7中动态计算UILable的高度

    .h文件 #import <UIKit/UIKit.h> @interface UILabel (ContentSize) - (CGSize)contentSize; @end .m文件 ...

  8. dynamic关键字的使用

    https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonConvert.htm 在使用DeserializeObject函数进行 ...

  9. 利用递归分割(Split)字符串

    利用递归分割(Split)字符串 SqlServer 递归 工作需要将表里的某个字段分割之后再插入到另一个表中,其实数据量不大,直接用游标一行一行的取,再利用循环来分割之后再实现数据的插入应该可以直接 ...

  10. GROUPPING和ROLLUP的基本知识

    1.GROUPPING 是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0. ...