el自定义函数

jsp页面引用:  用taglib指令,引入自定义的EL函数库 

1 <%@ taglib prefix="re" uri="http://com.kintech/taglib/regularExpression"  %>
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
 3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
 5         version="2.0">
 6 
 7     <!-- 标签库的描述 -->
 8     <description>写一个支持正则表达式的el函数</description>
 9 
10     <!-- 定义这个标签库的版本 -->
11     <tlib-version>1.0</tlib-version>
12 
13     <!-- taglib指令中prefix需要制定的部分,可以任意写,但是尽可能和文件名保持一致,方便管理。 -->
14     <short-name>Re</short-name>
15 
16     <!-- taglib指令中URI需要指定的部分,可以任意写 -->
17     <uri>http://com.kintech/taglib/regularExpression</uri>
18 
19     <!-- 一个function结点 就是一个EL自定义函数 -->
20     <function>
21         <description>拼接两个字符串</description> <!--函数的功能描述-->
22         <name>joinSting</name> <!--EL函数名,也就是在JSP页面中使用时的名称,它可以和java代码中的函数名不一样-->
23         <function-class>com.kintech.web.tag.RegularExpressionTag</function-class> <!--函数所在的类 需要绑定的类的全限定名-->
24         <function-signature>java.lang.String Join(java.lang.String,java.lang.String)</function-signature> <!-- 自定义函数签名的完整写法,忽略形参:方法返回类型 方法名 (参数的类型列表...) -->
25         <example>${Re:joinSting(aaa,bbb)}</example>
26     </function>
27 
28     <function>
29         <description>过滤特殊字符字符</description> <!--函数的功能描述-->
30         <name>regEx</name> <!--EL函数名,也就是在JSP页面中使用时的名称,它可以和java代码中的函数名不一样-->
31         <function-class>com.kintech.web.tag.RegularExpressionTag</function-class> <!--函数所在的类 需要绑定的类的全限定名-->
32         <function-signature>java.lang.String regEx(java.lang.String)</function-signature> <!-- 自定义函数签名的完整写法,忽略形参:方法返回类型 方法名 (参数的类型列表...) -->
33         <example>${re:regEx(item.showFileName)}</example>
34     </function>
35 
36 </taglib>

java:

 1 package com.kintech.web.tag;
 2 
 3 import java.util.regex.Matcher;
 4 import java.util.regex.Pattern;
 5 
 6 /**
 7  * Created by jsj on 2020/3/11.
 8  */
 9 public class RegularExpressionTag {
10 
11     //自定义EL函数必须用static修饰
12     //实现两个字符串的拼接
13     public static String Join(String source,String target) {
14         return source+target;
15     }
16 
17     public static String regEx(String target){
18         // 只允许字母和数字
19         // String regEx ="[^a-zA-Z0-9]";
20         // 清除掉所有特殊字符
21         String regEx="[`~!@#$%^&*()+=|{}':;',\[\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
22         Pattern p = Pattern.compile(regEx);
23         Matcher m = p.matcher(target);
24         return m.replaceAll("").trim();
25     }
26 }

 在jsp页面的引用: ${Re:joinSting(参数1,参数2)}

最后再来看一下我项目里面的目录结构:

原文地址:https://www.cnblogs.com/time1997/p/12553029.html