全国咨询/投诉热线:400-618-4000

JAVA培训之EL函数库

更新时间:2016年09月29日16时42分 来源:传智播客JAVA培训学院 浏览次数:

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" %>
... ...
<body>
       <%
              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) }<br/><!--返回arr的长度-->
              ${fn:length(list) }<br/><!--返回list的长度-->
              ${fn:toLowerCase("Hello") }<br/> <!-- 将Hello变成小写 -->
              ${fn:toUpperCase("Hello") }<br/> <!-- 将Hello变成大写 -->
              ${fn:contains("abc", "a")}<br/><!-- 判断abc中是否包含a -->
              ${fn:containsIgnoreCase("abc", "Ab")}<br/><!-- 在忽略大小写的情况下,判断abc中是否包含Ab -->
              ${fn:contains(arr, "a")}<br/><!-- 判断arr数组中是否包含a -->
              ${fn:containsIgnoreCase(list, "A")}<br/><!-- 在忽略大小写的情况下,判断list集合中是否包含A -->
              ${fn:endsWith("Hello.java", ".java")}<br/><!-- 判断Hello.java是否以.java结束 -->
              ${fn:startsWith("Hello.java", "Hell")}<br/><!-- 判断Hello.java是否以Hell开始 -->
              ${fn:indexOf("Hello-World", "-")}<br/><!-- 返回“-”在Hello-World中出现的位置 -->
              ${fn:join(arr, ";")}<br/><!-- 将arr数组中的元素以“-”连接,并返回 -->
              ${fn:replace("Hello-World", "-", "+")}<br/><!-- 将Hello-World中的“-”替换成“+” -->
              ${fn:join(fn:split("a;b;c;", ";"), "-")}<br/><!--最终是将数组的元素以“-”连接,并返回 -->
             
              ${fn:substring("0123456789", 6, 9)}<br/><!-- 返回0123456789中索引值为6到索引值为9之间的元素 -->
              ${fn:substring("0123456789", 5, -1)}<br/><!-- 返回0123456789中索引值为6到结束的元素  -->
              ${fn:substringAfter("Hello-World", "-")}<br/><!-- 返回Hello-World中“-”后面的字符串 -->
              ${fn:substringBefore("Hello-World", "-")}<br/><!-- 返回Hello-World中“-”前面的字符串  -->
              ${fn:trim("     a b c     ")}<br/><!-- 去掉     a b c     前后的空格 -->
              ${fn:escapeXml("<html></html>")}<br/> <!-- 将“<html></html>”中的“<”,“>”转义,即原样输出 -->
</body>
(2)将Example8发布到服务器,然后启动服务器,在浏览器端访问fn.jsp,浏览器显示结果如图1-2所示:

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

图1-3 浏览器显示结果

本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额