1.什么是EL函数库
EL函数库是由第三方对EL的扩展,我们现在学习的EL函数库是有JSTL提供的,JSTL我们会在后面的课程中详解。EL函数库就是定义了一些有返回值的静态方法,然后通过EL表达式来调用它们,不仅仅JSTL可以定义EL函数库,我们自己也可以
自定义EL函数库,这个后面我们也会讲到。
在jsp页面中使用taglib指令导入EL函数库,就可以在页面中使用函数库中的方法。另外,导入的函数库可以使用的前提是,我们的项目中有相关的jar包,我们自己并没有将jar包拷贝的lib目录下,但是当我们的项目发布到服务器下,lib目录中就有了jar包,如图1-1所示:

图1-1 lib目录
2.使用EL函数库
要使用EL函数库,首先要在jsp文件的上面使用taglib指令导入函数库:
- <%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions”%>
其中,uri的值并不是一个网络路径,只是在定义函数库时,拟定的一个位置。
下面我们来了解EL函数库中的相关方法,具体如下:
- String toUpperCase(String input):把字符串参数转换成大写,并返回;
- String toLowerCase(String input):把字符串参数转换成小写,并返回;
- int indexOf(String input, String substring):返回input中substring出现的索引位置;
- boolean contains(String input, String substring):查看input中是否包含substring,包含返回true,否则返回false;
- boolean containsIgnoreCase(String input, String substring):在忽略大小写的情况下,查看input中是否包含substring,包含返回true,否则返回false;
- boolean startsWith(String input, String substring):判断input是否是以substring为前缀,如果是就返回true,否则就返回false;
- boolean endsWith(String input, String substring):判断input是否是以substring为后缀,如果是就返回true,否则就返回false;
- String substring(String input, int beginIndex, int endIndex):以beginIndex为开始值,endIndex为结束值,在input上截取子串;
- String substringAfter(String input, String substring):获取input中,substring所在位置后面的字符串;
- substringBefore(String input, String substring):获取input中,substring所在位置前面的字符串;
- String escapeXml(String input):把input中“<”、“>“、”&“、”'“、“"”进行转义;
- String trim(String input):去除input中的前后空格;
- String replace(String input, String substringBefore, String substringAfter):将input中的substringBefore替换成substringAfter;
- String[] split(String input, String delimiters):以delimiters为标识分割input,返回一个字符串数组;
- int length(Object obj):可以获取字符串、数组、各种集合的长度!
- String join(String array[], String separator):将array数组中的元素以separator连接起来,返回一个字符串。
通过以上对EL函数库中的方法的讲解,下面通过一个案例来学习这些方法的使用,如下:
(1)创建一个web应用,Example8,在该应的WebRoot目录下新建一个fn目录,然后再该目录下新建一个fn.jsp文件,主要代码如例1-1所示:
例1-1 fn.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
... ...
<%
String[] strs = {"a", "b","c"};//定义一个字符数组
List list = new ArrayList();//定义一个list集合
list.add("a");//向集合中添加一个字符
pageContext.setAttribute("arr", strs);//将字符数据以arr的名字保存在page域中
pageContext.setAttribute("list", list);//将list集合以list的名字保存在page域中
%>
${fn:length(arr) }
${fn:length(list) }
${fn:toLowerCase("Hello") }
${fn:toUpperCase("Hello") }
${fn:contains("abc", "a")}
${fn:containsIgnoreCase("abc", "Ab")}
${fn:contains(arr, "a")}
${fn:containsIgnoreCase(list, "A")}
${fn:endsWith("Hello.java", ".java")}
${fn:startsWith("Hello.java", "Hell")}
${fn:indexOf("Hello-World", "-")}
${fn:join(arr, ";")}
${fn:replace("Hello-World", "-", "+")}
${fn:join(fn:split("a;b;c;", ";"), "-")}
${fn:substring("0123456789", 6, 9)}
${fn:substring("0123456789", 5, -1)}
${fn:substringAfter("Hello-World", "-")}
${fn:substringBefore("Hello-World", "-")}
${fn:trim(" a b c ")}
${fn:escapeXml("")}
|
(2)将Example8发布到服务器,然后启动服务器,在浏览器端访问fn.jsp,浏览器显示结果如图1-2所示:

图1-2 浏览器显示结果
例1-1中,在使用函数库中的方法之前,分别定义了一个字符串数组str和一个list集合,然后将这两个变量存放在page域中,这样做的原因是,函数库中的这些方法的参数如果是变量,那么必须将变量放在域中,否则EL表达式就获取不到这些变量,例如将例1-1中的存放数据到域中的代码注释掉,再次方法fn.jsp,浏览器运行结果如图1-3所示:

图1-3 浏览器显示结果
本文版权归澳门大阳城APP入口Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:澳门大阳城APP入口Java培训学院
首发:http://www.itcast.cn/javaee