EL调用Java方法

上传人:油条 文档编号:13087277 上传时间:2017-09-04 格式:PDF 页数:9 大小:711.37KB
返回 下载 相关 举报
EL调用Java方法_第1页
第1页 / 共9页
EL调用Java方法_第2页
第2页 / 共9页
EL调用Java方法_第3页
第3页 / 共9页
EL调用Java方法_第4页
第4页 / 共9页
EL调用Java方法_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《EL调用Java方法》由会员分享,可在线阅读,更多相关《EL调用Java方法(9页珍藏版)》请在金锄头文库上搜索。

1、 1 / 9 EL 调用 Java 方法 简单来说,我们在一个类中的某个方法,可以使用 EL 进行调用,这个能被 EL 表达式调用的方法称之为 EL 函数,但是这种方式必须满足以下两点要求: 在 EL 表达式中调用的只能是 Java 类的静态方法 这个 Java 类的静态方法需要在我们另外在自定义的 TLD 文件中描述 满足以上两点才能被 EL 表达式调用。 语法: $prefix:方法名 (参数列表 ) 例 1:使用 EL 函数来实现 HTML 语言的过滤转义 在 web 工程中自定义一个 HTMLFilter 类,同时定义一个静态的 filter 方法: 1 package com.bjp

2、owernode.filter; 2 public class HtmlFilter 3 4 public static String filter(String message) 5 6 if (message = null) 7 return (null); 8 9 char content = new charmessage.length(); 10 message.getChars(0, message.length(), content, 0); 11 StringBuilder result = new StringBuilder(content.length + 50); 12

3、for (int i = 0; i : 18 result.append(); 19 break; 20 case &: 21 result.append(&); 22 break; 23 case : 24 result.append(); 2 / 9 25 break; 26 default: 27 result.append(contenti); 28 29 30 return (result.toString(); 31 32 33 这个类中的 filter方法能将 HTML语言转换为普通的字符串,当然这个类和方法在 Tomcat中也有示例,路径为【 Tomcat】-【 webapps

4、】 -【 examples】 -【 WEB-INF】 -【 classes】 -【 utils】,找到 HTMLFilter.java 就是了。 好了我们已经有静态的方法了,现在需要在 TLD 文件中对这个方法进行描述才能在 JSP 中使用。 TLD 文件需要在 “WEB -INF” 文件中创建和定义,在哪里找模板呢,依然可以到 Tomcat 中寻找。在【 Tomcat】 -【 webapps】 -【 examples】 -【 WEB-INF】 -【 jsp2】中有一个 “jsp2 -example-taglib.tld” 文件,我们就可以对这个文件复制其 “ 首尾 ” 啦。 在 web 工程

5、下建立 “elfunction.tld” 文件,从 “jsp2 -example-taglib.tld” 文件模板中抄首抄尾,其中 标签也是我们需要的: 1 2 6 A tag library exercising SimpleTag handlers. 7 1.0 8 SimpleTagLibrary 3 / 9 9 elfunction 10 11 12 Converts Html to String 13 filter 14 com.bjpowernode.filter.HtmlFilter 15 java.lang.String filter( java.lang.String ) 1

6、6 17 在 TLD 文件中要对某 Java 静态方法进行描述最重要的就是要定义 标签,在 标签下,只是对该方法的描述,不是必需的; 指定在 JSP 上使用该 EL 函数时应该使用的标签名;指定该方法所在的类,必需提供完整类名 (包括包名 ); 是方法签名,就是对所使用的静态方法的声明,所有的参数都必需指定完整类名,包括返回值类型和参数列表类型。 好了,接下来我们在 JSP 页面中就可使用刚才定义好的 EL 函数了,当然,首先我们应该现在 JSP 上使用 tablib 指定导入标签库,并定义好标签前缀 (prefix): 最后再在 JSP 页面的主体中使用 EL 函数: $elfn:filte

7、r(百度 ) 在浏览器中观察: 这样,使用 EL 函数就将一个超链接过滤转义成普通的文本了。 通过上面的例子,使用 EL 函数似乎和自定义标签一样,可以移除 JSP 中出现的 Java 代码,但是 EL 函数比自定义标签的不足之处 在于, EL 函数只能移除与 web 无法的方法,无法移除与 web 有关的方法,比如某些方法中含有HttpServletRequest、 HttpServletResponse 等等这样的对象,因为在定义静态方法的时候,我们无法使用到这些 web 对象,这些 web 对象都是由 Tomcat 服务器返回这些接口的实例对象的,这都是服务器中低层封装好的,我们平常使用

8、静态方法根本无法获取,因此此时还是需要使用自定义标签的。 Sun 公司也帮我们制作了一个函数库,在这函数库中封装好了一些常用的 EL 函数,平时我们可以先看看在这个函数库 中是否有满足我们需求的 EL 函数,如果没有再像上面一样自定义。 Sun 公司定义的 EL 函数封装和描述在 JSTL 标签库中,因此在 JSP 页面中使用这个 EL 函数库时,应该先导入 JSTL 开发包, 4 / 9 并在该页面中导入 EL 函数库。如果是使用 JavaEE5.0 以上的, JSTL 包会自动导入,可以在【 Java EE 5 Libraries】库中看到: 在这个 “jstl -1.2.jar” 中,查

9、看其 “META -INF” 文件,有一个 “fn.tld” 文件,这个就是 Sun 公司封装在 JSTL 中的 EL 函数的 TLD 文件: 我们可 以点击进去看看,这个 tld 文件中封装了所有 Sun 公司设计好的 EL 函数,同时也提供了 taglib 指令的 uri,和推荐前缀 (prefix): 那么我们在 JSP 页面中导入 tablib 指令时只要这两个信息即可: 这样我们就可以在 JSP 页面中使用 Sun 公司开发好的 EL 函数了。 例 2: fn:toLowerCase 函数 $fn:toLowerCase(AAA) 5 / 9 输出: aaa。 例 3: fn:len

10、gth()函数 $fn:length(aaa) 输出: 3 例 4: fn:length 函数 1 4 5 $fn:length(arr) 输出: 5 例 5:使用 JSTL 与 EL 函数来遍历集合 需同时导入 JSTL 与 EL 的 tablib 指令: 在 JSP 主体中的代码如下: 1 list = new ArrayList(); 3 list.add(Ding); 4 list.add(LRR); 5 request.setAttribute(list, list); 6 % 7 8 9 $listi 10 在浏览器中观察: 6 / 9 例 6: fn:join 函数 fn:joi

11、n 函数第 一个参数为字符串数组或集合,第二个参数为将该字符串数组或集合相连起来的分隔符。 1 5 6 $fn:join(arr,.) 输出: 注:如果 fn:join 函数的第二个参数为空字符串 “” ,那么将会把所有元素直接相连。 例 7: fn:contains 函数 fn:contains 函数检测一个字符串中是否包含指定的字符串,返回值为布尔类型。注意, fn:contains 函数只 能检测字符串,不能以数组来检测,如果第二个参数为空字符串 “” ,那么 fn:contains 函数总是返回 true。 $fn:contains(fjdingsd,fj) 输出: true。 注:

12、 fn:contains 函数是大小写敏感的,如果要忽略大小写,请使用 fn:containsIgnoreCase 函数。 例 8: 取出表单类型为 checkbox 的数据回显 模拟在表单提交失败时,对于表单中类型为 “checkbox” 的表单项的数据,可以使用 EL 函数从重新转发回的 request获取数 据,经过一定的处理,使该页面中的表单项数据重新显示: 1 4 5 唱歌 7 跳舞 9 游戏 11 电影 在浏览器中观察: 例 9: fn:escapeXml 函数 功能与例 1 相同,对 HTML 语言进行过滤转义成字符串。 $fn:escapeXml(百度 ) 浏览器中观察: 8

13、/ 9 例 10:自定义字符串连接的 EL 函数 (因为在 EL 表达式中不支持使用 ”+” 作为字符串的连接符 ) 在一个类中定义字符串连接的静态方法: 1 public class MyElFunctions 2 3 public static String connectString(String str1,String str2) 4 return str1+str2; 5 6 7 在【 WEB-INF】中自定义 TLD 文件中声明这个方法 ,同时定义自己的 uri: 1 2 6 A tag library exercising SimpleTag handlers. 7 1.0 8 SimpleTagLibrary 9 myelfunction 10 11 12 Connect two Strings 13 connect 14 com.bjpowernode.elfunctions.MyElFunctions 15 java.lang.String connectString( java.lang.String , java.lang.String ) 16 17 在 JSP 页面中加入 taglib 声明: 9 / 9 在 JSP 页面中的主体代码为: 1 6 7 $sessionScope.user!=null ? elfn:connect(欢迎

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号