Evan_QB的博客

守护繁华,必先远离繁华

【javaweb】jstl标签库之Function标签库

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。 
引入: 
<%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions” %>

其实跟java代码中处理字符串的方法类似,只是封装好成函数来用了 
(使用形式:${ fn:contains(name, searchString) }):

fn:contains()   测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith()   测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()  跳过可以作为XML标记的字符
fn:indexOf()    返回指定字符串在输入字符串中出现的位置
fn:join()       将数组中的元素合成一个字符串然后输出
fn:length()     返回字符串长度
fn:replace()    将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()      将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring()  返回字符串的子集
fn:substringAfter()     返回字符串在指定子串之后的子集
fn:substringBefore()    返回字符串在指定子串之前的子集
fn:toLowerCase()        将字符串中的字符转为小写
fn:toUpperCase()        将字符串中的字符转为大写
fn:trim()     移除首位的空白符

为什么fn函数不使用<fn:function()>标签语言,而要放在${ }中使用? 
我的理解是fn既然是函数,那就是相当于执行java代码,就好比放在<% %>中的代码一样,所以不使用标签形式而直接执行。因为比如eq、!、==等这些运算符都是放到${}中执行的,所以函数也不例外。

API:boolean contains(java.lang.String, java.lang.String)
例子:${fn:contains(name, searchString)}

API:boolean containsIgnoreCase(java.lang.String, java.lang.String)
例子:${fn:containsIgnoreCase(name, searchString)}

API:boolean endsWith(java.lang.String, java.lang.String)
例子:${fn:endsWith(filename, ".txt")}

API:java.lang.String escapeXml(java.lang.String)
例子:${fn:escapeXml(param:info)}

API:int indexOf(java.lang.String, java.lang.String)
例子:${fn:indexOf(name, "-")}

API:java.lang.String join(java.lang.String[], java.lang.String)
例子:${fn:join(array, ";")}

API:int length(java.lang.Object)//字符串长度或者数组长度
例子:${fn:length(shoppingCart.products)}

API:java.lang.String replace(java.lang.String, java.lang.String, java.lang.String)
例子: ${fn:replace(text, "-", "&#149;")}

API:java.lang.String[] split(java.lang.String, java.lang.String)
例子:${fn:split(customerNames, ";")}

API:boolean startsWith(java.lang.String, java.lang.String)
例子:<c:if test='${fn:startsWith(product.id, "100-")}'>

API:java.lang.String substring(java.lang.String, int, int)
例子:${fn:substring(zip, 6, -1)}

API:java.lang.String substringAfter(java.lang.String, java.lang.String)
例子:${fn:substringAfter(zip, "-")}//对应有个before

API:java.lang.String toLowerCase(java.lang.String)
例子:${fn:toLowerCase(product.name)}//对应有个upperCase

不举了

具体使用:打出这部分${fn: },光标留在:后面,使用提示快捷键alt+/ 
这时候出来给你选: 
这里写图片描述 
用法跟java类似!

测试使用:

<body>
<%
request.setAttribute("key", "0123456ABCdefGHK");

List<String> list = new ArrayList<String>();
for(int i =0 ;i<10;i++){
    list.add(String.valueOf(i*i));
}
request.setAttribute("list", list);

String[] names = new String[]{"0","1","2","3","2","3","2","3"};
request.setAttribute("names", names);
%>
从后台获取到的参数:key:'${key }'<br><!-- 0123456ABCdefGHK -->
 \${fn:contains(key,"dEfg") }:${fn:contains(key,"dEfg") }<br>
 \${fn:containsIgnoreCase(key,"dEfg") }:${fn:containsIgnoreCase(key,"dEfg") }<br>
 \${fn:endsWith(fn:toLowerCase(key),fn:toLowerCase(DEFGHK)) }:${fn:endsWith(fn:toLowerCase(key),fn:toLowerCase(DEFGHK)) }<br>
 \${fn:escapeXml("") }:${fn:escapeXml("") }<br>
 \${fn:indexOf("012sdg","d") }:${fn:indexOf("012sdg","d") }<br>
 \${fn:join(names,",,") }:${fn:toUpperCase(fn:join(names,",,")) le fn:toUpperCase(fn:join(names,",,")) }<br>
 \${fn:length("1234") }:${fn:length("1234") }<br>
 \${fn:length(names) }:${fn:length(names) }<br>
 \${fn:length(list) }:${fn:length(list) }<br>
 \${fn:replace("0s0s0","0","90009") }:${fn:replace("0s0s0","0","90009") }<br>
 \${fn:substring(key,5,7) }:${fn:substring(key,5,7) }<br>
 \${fn:substringAfter(key,"5") }:${fn:substringAfter(key,"5") }<br>
 \${fn:substringBefore(key,"6") }:${fn:substringBefore(key,"6") }<br>
 \${fn:trim("  sdfg  ") }:${fn:trim("s    dfs         d") }
</body>

转自: https://blog.csdn.net/liangwenrong/article/details/78047178


阅读更多
想对作者说点什么? 我来说一句

JSTL标签库需要导入的Jar包

2017年05月20日 702KB 下载

JSTL标签库使用需要的两个jar包

2016年06月22日 360KB 下载

没有更多推荐了,返回首页

不良信息举报

【javaweb】jstl标签库之Function标签库

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭