使用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. openstackM版本常见问题汇总

    汇总下常见的问题以及解释下一些比较容易让人萌的参数配置等等 问题汇总1.使用纯文本模式进行复制粘贴,打死不要用word!!!可以解决绝大多数问题,如果你依然执迷不悟,那么就好自为之吧 2.创建路由器时 ...

  2. hdu 5934 Bomb

    Bomb Problem Description There are N bombs needing exploding.Each bomb has three attributes: explodi ...

  3. IE浏览器打开f12才正常

    IE浏览器打开f12才正常,最后发现是js中有向控制台打log的语句,程序执行到这些语句就不走了,去掉这些语句就好了!

  4. linux ddos防御攻击

    Linux Ddos防御攻击 [root@lxh ~]# netstat -ntu |awk '{print $5}'|grep '[0-9]'|cut -d: -f1 |sort |uniq -c| ...

  5. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  6. codeforces 420B Online Meeting

    一道实现很蛋疼的题.必须静下理清思路,整理出各种情况.不然就会痛苦地陷入一大堆if..else里不能自拔. #pragma comment(linker, "/STACK:102400000 ...

  7. kenrnel 驱动中常用的宏

    http://blog.csdn.net/uruita/article/details/7263290 1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名 ...

  8. [Chapter 3 Process]Practice 3.3 Discuss three major complications that concurrent processing adds to an operating system.

    3.3  Original version of Apple's mobile iOS operating system provied no means of concurrent processi ...

  9. Html.DropDownList 选中 mvc view 弱类型

    List<Model.SysGroup> listGroup = sysGroupBll.Where(o => o.IsSb == true, o => o.Id).ToLis ...

  10. nodejs:使用多处理器

    nodejs是单线程,这意味着Node只能利用一个处理器来工作.但多数服务器都有多个核.好在nodejs提供了cluster模块,可以把任务分配给子进程.每个子进程有些特殊能力,比如能与其他子进程共享 ...