使用el调用Java方法

  1:EL表达式语法允许开发人员开发自定义函数,以调用java类的方法。

    ~示例:${el:method(params)}

    ~在EL表达式中调用的只能是java类的静态方法。

    ~这个java类的静态方法需要在TLD文件中描述,才可以被EL表达式调用。

    ~EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通java程序代码所能完成的功能。

EL Function开发步骤

  一般来说,EL自定义函数开发与应用包括以下三个步骤

(1):编写一个java类的静态方法

     (2):编写标签库描述(tld)文件,在tld文件中描述自定义函数。

     (3):在JSP页面中导入和使用自定义的el function

下面举个列子:

1.在WebRoot\WEB-INF目录下面建立一个mytag.tld文件。

2.Mytag.tld内容是:

<?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"> 

    <tlib-version>1.0</tlib-version> 

    <short-name>el</short-name> 

<function>

<!-- 对这个EL方法的描述  -->

       <description>calculate string length</description> 

       <name>FunctionsEl</name><!-- 调用EL方法的名称 --> 

        <function-class>com.el.code.FunctionsEl</function-class> 

        <function-signature> 

             java.lang.String elEncode(java.lang.String)

        </function-signature> 

         <example>${el:FunctionsEl(str)}</example><!-- 例如 --> 

      </function> 

   </taglib>

3.在com.el.code包下面新建一个类名为FunctionsEl的类。

package com.gouwu.youboy.util;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

/**

 * @project XXX

 * @author : XXX

 * @version 1.0

 * @Create:2011 5:41:27 PM

 * @Update:

 * @describe:

 */

public class FunctionsEl {

    /**

     * 对中文进行转码

     * @param str 中文字符串

     * @return 中文编码过后的的字符串

     */

    public static String elEncode(String str) {

        String decodeStr = null;

        try {

            decodeStr = URLEncoder.encode(str, "UTF-8");

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        return decodeStr;

    }

}

4.在JSP页面引用如下:

<%@ taglib prefix="el" uri="/WEB-INF/mytag.tld"%>

${el:FunctionsEl(iklist)}

开发EL Function注意事项

~编写完标签库描述文件后,需要将它放置到web应用的WEB-INF目录中或者WEB-INF目录下

的除了class和lib目录之外的任意目录上。

~TLD文件中的<url>元素用制定该TLD文件的URL,在JSP文件中需要通过这个URL来引入该标签库描述文件

~<function>元素用于标签描述,一个EL自定义函数,其中:

<name>子元素用于指定EL自定义函数的名称。

   <function-class>子元素用于指定完整的java类名

   <function-signature>子元素用于指定java类中的静态方法签名,方法签名必须指明

    方法的返回值类型以及各个参数的类型,各个参数之间用逗号分隔。

JSTL中的常用EL函数

~由于在JSP页面中显示数据时,经常需要对显示的字符进行处理,SUN公司针对于一些常用

处理定义了一套EL函数库供开发者使用。

11、fn:toLowerCase

fn:toLowerCase函数将一个字符串中包含的所有字符转换为小写形式,并返回转换后的字符串,它接收一个字符串类型的参数,例如

fn:toLowerCase("Www.IT315.org") 的返回值为字符串“www.it315.org”

fn:toLowerCase("")的返回值为空字符串

12、fn:toUpperCase

fn:toUpperCase函数将一个字符串中包含的所有字符转换为大写形式,并返回转换后的字符串,它接收一个字符串类型的参数。例如:

fn:toUpperCase("Www.IT315.org") 的返回值为字符串“WWW.IT315.ORG”

fn:toUpperCase("")的返回值为空字符串

13、fn:trim

fn:trim函数删除一个字符串的首尾的空格,并返回删除空格后的结果字符串,它接收一个字符串类型的参数。需要注意的是,fn:trim函数不能删除字符串中间位置的空格。

例如,fn:trim("   www.it315.org  ") 的返回值为字符串“www.it 315.org”。

14、fn:split

(1)fn:split函数以指定字符串作为分隔符,将一个字符串分割成字符串数组并返回这个字符串数组。

(2)fn:split函数接收两个字符串类型的参数,第一个参数表示要分割的字符串,第二个参数表示作为分隔符的字符串。

(3)例如,fn:split("www.it315.org", ".")[1]的返回值为字符串“it315”。

15、fn:length

(1)fn:length函数返回一个集合或数组大小,或返回一个字符串中包含的字符的个数,返回值为int类型。fn:length函数接收一个参数,这个参数可以是<c:forEach>标签的items属性支持的任何类型,包括任意类型的数组、java.util.Collection、java.util.Iterator、java.util.Enumeration、java.util.Map等类的实例对象和字符串。

(2)如果fn:length函数的参数为null或者是元素个数为0的集合或数组对象,则函数返回0;如果参数是空字符串,则函数返回0。

16、fn:join

(1)fn:join函数以一个字符串作为分隔符,将一个字符串数组中的所有元素合并为一个字符串并返回合并后的结果字符串。fn:join函数接收两个参数,第一个参数是要操作的字符串数组,第二个参数是作为分隔符的字符串。

(2)如果fn:join函数的第二个参数是空字符串,则fn:join函数的返回值直接将元素连接起来。例如:

假设stringArray是保存在Web域中的一个属性,它表示一个值为{"www","it315","org"}的字符串数组,则fn:join(stringArray, “.")返回字符串“www.it315.org”

fn:join(fn:split("www,it315,org", ","), ".") 的返回值为字符串“www.it315.org”

17、fn:indexOf

(1)fn:indexOf函数返回指定字符串在一个字符串中第一次出现的索引值,返回值为int类型。fn:indexOf函数接收两个字符串类型的参数,如果第一个参数字符串中包含第二个参数字符串,那么,不管第二个参数字符串在第一个参数字符串中出现几次,fn:indexOf函数总是返回第一次出现的索引值;如果第一个参数中不包含第二个参数,则fn:indexOf函数返回-1。如果第二个参数为空字符串,则fn:indexOf函数总是返回0。例如:

(2)fn:indexOf("www.it315.org","t3") 的返回值为5

18、fn:contains

(1)fn:contains函数检测一个字符串中是否包含指定的字符串,返回值为布尔类型。fn:contains函数在比较两个字符串是否相等时是大小写敏感的。

(2)fn:contains函数接收两个字符串类型的参数,如果第一个参数字符串中包含第二个参数字符串,则fn:contains函数返回true,否则返回false。如果第二个参数的值为空字符串,则fn:contains函数总是返回true。实际上,fn:contains(string, substring)等价于fn:indexOf(string, substring) != -1。

(3)忽略大小的EL函数:fn:containsIgnoreCase

19、fn:startsWith

(1)fn:startsWith函数用于检测一个字符串是否是以指定字符串开始的,返回值为布尔类型。

(2)fn:startsWith函数接收两个字符串类型的参数,如果第一个参数字符串以第二个参数字符串开始,则函数返回true,否则函数返回false。如果第二个参数为空字符串,则fn:startsWith函数总是返回true。例如:

(3)fn:startsWith("www.it315.org","it315")的返回值为false

(4)与之对应的EL函数:fn:endsWith

20、fn:replace

(1)fn:replace函数将一个字符串中包含的指定子字符串替换为其它的指定字符串,并返回替换后的结果字符串。fn:replace方法接收三个字符串类型的参数,第一个参数表示要操作的源字符串,第二个参数表示源字符串中要被替换的子字符串,第三个参数表示要被替换成的字符串。例如:

(2)fn:replace("www it315 org", " ", ".")的返回值为字符串“www.it315.org”

21、fn:substring

(1)fn:substring函数用于截取一个字符串的子字符串并返回截取到的子字符串。fn:substring函数接收三个参数,第一个参数是用于指定要操作的源字符串,第二个参数是用于指定截取子字符串开始的索引值,第三个参数是用于指定截取子字符串结束的索引值,第二个参数和第三个参数都是int类型,其值都从0开始。例如:

(2)fn:substring("www.it315.org", 4, 9) 的返回值为字符串“it315”

22、fn:substringAfter

(1)fn:substringAfter函数用于截取并返回一个字符串中的指定子字符串第一次出现之后的子字符串。fn:substringAfter函数接收两个字符串类型的参数,第一个参数表示要操作的源字符串,第二个参数表示指定的子字符串,例如:

(2)fn:substringAfter(“www.it315.org”, “.”)的返回值为字符串“it315.org”。

(3)与之对应的EL函数为:fn:substringBefore

el表达式的function标签的更多相关文章

  1. 在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式

    一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.c ...

  2. jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...

  3. (十)EL表达式和JSTL标签快速入门

    目录 什么是 el 表达式 示例:使用EL表达式获取pageContext .request.session.application域中的数据: 示例:使用EL表达式获取Bean属性 获取当前WEB应 ...

  4. JavaWeb(七)Cookie,EL表达式,标准标签库

    Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端, ...

  5. EL表达式、JSTL标签库

    一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...

  6. JavaWeb基础—EL表达式与JSTL标签库

    EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一 ...

  7. JavaWeb(七):EL表达式、自定义标签和JSTL

    一.EL表达式 语法 el.jsp <%@page import="java.util.Date"%> <%@page import="com.atgu ...

  8. JSP、EL表达式、JSTL标签库干货(建议收藏)

    JSP(Java Server Pages)类似于ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件, ...

  9. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

随机推荐

  1. css 层的嵌套

    html <div class="menu"> <ul> <li><a class="li1" title=" ...

  2. Hdu OJ 5115 Dire Wolf (2014ACM/ICPC亚洲区北京站) (动态规划-区间dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目大意:前面有n头狼并列排成一排, 每一头狼都有两个属性--基础攻击力和buff加成, 每一头 ...

  3. 附10 kibana创建新的index patterns

    elk整体架构图: 一.logstash indexer 配置文件: input { stdin{} } filter { } output { elasticsearch { hosts => ...

  4. CommandArgument传多个参数

    CommandArgument='<%#Eval("id")+","+Eval("interName") %>'

  5. Spring +SpringMVC 实现文件上传功能。。。

    要实现Spring +SpringMVC  实现文件上传功能. 第一步:下载 第二步: 新建一个web项目导入Spring 和SpringMVC的jar包(在MyEclipse里有自动生成spring ...

  6. Servlet实现自动刷新功能

    使用Servlet实现自动刷新功能,每一秒钟在浏览器输出一个随机数字. package chensi.com; import java.io.IOException; import java.util ...

  7. 利用iframe无刷新上传文件的坑

    页面里经常要用到文件上传的功能,而且要求页面不刷新,先说一下原理:页面里放一个file控件和submit按钮,外面用form表单包住,给form表单加上对应的属性值,action.method.ent ...

  8. 利用fiddler模拟发送json数据的post请求

    fiddler是调试利器,有许多好用的功能,这里简单的介绍一下利用fiddler模拟发送post请求的例子 先简单介绍一下失败的例子,最后给出正确的方法

  9. linux安装,window上安装centos虚拟机

    使用的软件如下 VMware_workstation_full_12.5.2.exeCentOS-6.5-x86_64-minimal.iso 安装要点: 1 先安装VMware2 建立一个虚拟机,注 ...

  10. JavaScript-插入concat,splice,截取slice

    拼接和截取:concat 拼接: var newArr=arr.concat(值1,值2,值3,值4,.....); 将值1值2,以及arr2中每个元素一次拼接到arr1结尾,返回新数组 强调: 1. ...