2024年4月19日发(作者:)

EL调用Java方法

简单来说,我们在一个类中的某个方法,可以使用EL进行调用,这个能被EL表达式调用的方法称之为EL函数,但是这种

方式必须满足以下两点要求:

① 在EL表达式中调用的只能是Java类的静态方法

② 这个Java类的静态方法需要在我们另外在自定义的TLD文件中描述

满足以上两点才能被EL表达式调用。

语法: ${prefix:方法名(参数列表) }

例1:使用EL函数来实现HTML语言的过滤转义

在web工程中自定义一个HTMLFilter类,同时定义一个静态的filter方法:

1 package ;

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 char[()];

10 rs(0, (), content, 0);

11 StringBuilder result = new StringBuilder( + 50);

12 for (int i = 0; i < ; i++) {

13 switch (content[i]) {

14 case '<':

15 ("<");

16 break;

17 case '>':

18 (">");

19 break;

20 case '&':

21 ("&");

22 break;

23 case '"':

24 (""");

1 / 9

25 break;

26 default:

27 (content[i]);

28 }

29 }

30 return (ng());

31

32 }

33 }

这个类中的filter方法能将HTML语言转换为普通的字符串,当然这个类和方法在Tomcat中也有示例,路径为【Tomcat】

--->【webapps】--->【examples】--->【WEB-INF】--->【classes】--->【utils】,找到就是了。

好了我们已经有静态的方法了,现在需要在TLD文件中对这个方法进行描述才能在JSP中使用。

TLD文件需要在“WEB-INF”文件中创建和定义,在哪里找模板呢,依然可以到Tomcat中寻找。在【Tomcat】--->

【webapps】--->【examples】--->【WEB-INF】--->【jsp2】中有一个“”文件,我们就可以

对这个文件复制其“首尾”啦。

在web工程下建立“”文件,从“”文件模板中抄首抄尾,其中

签也是我们需要的:

1

2

3 xmlns:xsi="/2001/XMLSchema-instance"

4 xsi:schemaLocation="/xml/ns/j2ee

/xml/ns/j2ee/web-jsptaglibrary_2_"

5 version="2.0">

6 A tag library exercising SimpleTag handlers.

7 1.0

8 SimpleTagLibrary

2 / 9