JAVA使用 * 对象进行敏感字过滤代码实例
作者:小猪_佩奇 时间:2021-07-29 13:27:26
这篇文章主要介绍了JAVA使用 * 对象进行敏感字过滤代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
package com.hopetesting.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
/**
* @author newcityman
* @date 2019/9/13 - 19:41
*/
@WebFilter("/*")
public class SensitiveWordsFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//1、创建代理对象,增强getParameter方法
ServletRequest proxy_req = (ServletRequest) Proxy.newProxyInstance(req.getClass().getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//判断是否是getParameter方法
//如果是,增强getParameter方法
if (method.getName().equals("getParameter")) {
//增强返回值
//获取返回值
String value = (String) method.invoke(req, args);
if (value != null) {
for (String str : list) {
if (value.contains(str)) {
value = value.replace(str, "******");
}
}
}
return value;
}
return method.invoke(req, args);
}
});
chain.doFilter(proxy_req, resp);
}
private List<String> list = new ArrayList<String>(); //敏感词汇集合
public void init(FilterConfig config) throws ServletException {
try {
//1、获取文件的真实路径
ServletContext servletContext = config.getServletContext();
String realPath = servletContext.getRealPath("/WEB-INF/classes/敏感词汇.txt");
//2、读取文件
BufferedReader br = new BufferedReader(new FileReader(realPath));
//3、将文件的每一行读取到list中
String line = null;
while ((line = br.readLine()) != null) {
list.add(line);
}
br.close();
System.out.println(list);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
来源:https://www.cnblogs.com/newcityboy/p/11517618.html
标签:java,动态,代理,敏感,过滤
0
投稿
猜你喜欢
android中实现在ImageView上随意画线涂鸦的方法
2023-03-04 07:55:23
Android开发之DatePicker和TimePicker实现选择日期时间功能示例
2022-10-06 05:35:21
Lombok基本注解之@SneakyThrows的作用
2021-12-24 15:30:47
Java最简洁数据结构之冒泡排序快速理解
2023-12-01 06:31:52
一文详解C#中方法重载的底层玩法
2022-03-08 11:11:03
Java对XML文件增删改查操作示例
2021-10-28 08:46:29
Java实现排队论的原理
2023-11-23 02:19:24
Java使用Socket简单通讯详解
2023-11-03 02:54:43
Android框架Volley之利用Imageloader和NetWorkImageView加载图片的方法
2023-07-06 00:21:08
Spring Security实现微信公众号网页授权功能
2021-07-09 08:28:46
Android UI新组件学习和使用
2022-04-09 01:42:03
Java concurrency之非公平锁_动力节点Java学院整理
2022-07-31 22:04:37
java.util.NoSuchElementException原因及两种解决方法
2022-02-10 15:18:58
Spring的事务管理你了解吗
2023-02-05 19:44:16
C# 委托的三种调用示例(同步调用 异步调用 异步回调)
2023-06-09 10:29:56
Java编写实现坦克大战小游戏
2023-11-24 09:15:34
JVM完全解读之GC日志记录分析
2022-09-22 12:43:08
C# 设计模式系列教程-外观模式
2023-01-08 18:44:40
深入学习C#网络编程之HTTP应用编程(上)
2023-12-12 23:12:27
关于Mybatis-Plus字段策略与数据库自动更新时间的一些问题
2023-08-05 20:44:22