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
投稿
猜你喜欢
java使用ftp上传文件示例分享
2021-10-23 08:33:03
Java与C++分别用递归实现汉诺塔详解
2021-10-23 01:28:59
带你走进Maven的大门-最全Maven配置及集成idea工具总结
2022-12-06 08:41:40
Jenkins初级应用之Invoke Phing targets插件配置
2023-10-14 03:55:56
如何修改FeginCilent定义的服务名到指定服务
2022-07-05 05:49:05
在项目中直接使用hystrix的流程分析
2021-10-22 01:55:21
关于RedisTemplate之opsForValue的使用说明
2023-07-09 16:53:04
SpringBoot2.x 参数校验问题小结
2023-05-22 02:21:22
C#判断一个字符串是否是数字或者含有某个数字的方法
2022-05-07 14:38:17
WinForm生成验证码图片的方法
2022-05-11 17:49:33
Flutter实现矩形取色器的封装
2023-06-19 04:08:47
详解java中的PropertyChangeSupport与PropertyChangeListener
2023-10-20 06:19:27
Java异常处理中的一些特殊情况举例
2021-10-11 20:31:54
使用Jenkins来构建GIT+Maven项目的方法步骤
2021-11-15 07:57:33
Java如何实现List自定义排序
2021-07-03 06:09:15
java 如何远程控制tomcat启动关机
2023-04-10 03:21:47
详解解密Java中的类型转换问题
2023-11-24 20:46:28
老生常谈设计模式之动态代理
2021-06-12 06:15:50
关于Java中@SuppressWarnings的正确使用方法
2023-07-22 17:17:58
C# 格式化JSON的两种实现方式
2023-03-14 05:31:16