JSTL包含一系列标准函数,大部分是通用的字符串处理函数。
引用JSTL函数库的语法如下:
<%@ taglibprefix="fn"uri="http://java.sun.com/jsp/jstl/functions" %>
【fn:split】
语法格式:
属性:
<p>
request.setAttribute("str", "1#2#3#4#5")如下:<br>
<c:forEach items="${fn:split(str,\" #\") }" var="v">
${v }<br>
</c:forEach>
<p>
【fn:length】
语法格式:
属性:
用jsp脚本取数据:<%=((String)request.getAttribute("hello")).length()%><br>
<br>
<br>使用JSTL的length函数,
函数必须放到EL表达式中,用法:前缀+冒号+函数名称):${fn:length(hello)}
<br>
【fn:contains 】
语法格式:
属性:
fn:contains 函数用于判断在源字符串中是否包含目标字符串.
以上 source 参数指定源字符串, target参数指定目标字符串,返回类型为 boolean 。
例如对于以下 EL 表达式:
${fn:contains(“Tomcat”,”cat”)}
${fn:contains(“Tomcat”,”CAT”)}
第一个 EL 表达式的值为 true ,第二个 EL 表达式的值为 false。
【fn:substringBefore】
语法格式:
属性:
fn:substringBefore函数用于获取源字符串中指定子字符串之前的子字符串。
以上 source 参数指定源字符串, target参数指定子字符串,返回类型为 String 。如果在源字符串中不包含特定子字符串,就返回空字符串。
例如对于以下 EL 表达式:
1 ${ fn: substringBefore(“Tomcat”,”cat”)}<br/>
2 ${ fn: substringBefore(“mydata.txt”,”.txt”)}<br/>
其输出结果为:
1 Tom
2 mydata
【自定义函数】
首先定义方法:
package com.bjpowernode.jstl;
/**
* 自定义JSTL函数库
* @author Administrator
*
*/
public class MyFunctions {
/**
* 必须为静态全局的
* @param username
* @return
*/
public static String sayHello(String username) {
return "Hello " + username;
}
}
然后提供tld描述文件,该文件在WEB-INF下建立,与lib文件同等级。(类似于自己定义的jar)
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>my functions library</description>
<display-name>my functions</display-name>
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<uri>http://www.bjpowernode.com/myfunctions</uri>
<function>
<name>say</name>
<function-class>com.bjpowernode.jstl.MyFunctions</function-class>
<function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
</function>
</taglib>
JSP代码:
自定义函数:${my:say("张三")}<br>