JAVA使用动态代理对象进行敏感字过滤代码实例
2019-10-13 18:05
1461 查看
这篇文章主要介绍了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(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- java使用动态代理来实现AOP(日志记录)的实例代码
- java使用动态代理来实现AOP(日志记录)的实例代码
- 使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
- 使用代理模式让应用程序使用动态java代码
- 使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
- java动态代理对象实例的创建
- Java反射学习总结四(动态代理使用实例和内部原理解析)
- java 反射和动态代理详解及实例代码
- 关于使用动态代理创建代理对象是报错 java.lang.ClassCastException: $Proxy0 cannot be cast to 的解决办法
- Java使用IKAnalyzer进行敏感词过滤
- 使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
- java使用DOM对XML文档进行增删改查操作实例代码
- 【Java进阶-Java动态代理与AOP】03 创建动态类的实例对象及调用其方法
- 使用Java进行SNMP编程-SNMP4J-SNMPv3-代码实例
- 使用Java进行SNMP编程-SNMP4J-SNMPv3-代码实例
- 使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
- java 使用动态代理 和ThreadLocal实现事务管理实例
- 使用Java进行SNMP编程-SNMP4J-SNMPv1/v2-代码实例
- Spring的AOP 动态代理基础--java代理对象的代码演示
- java 中动态代理(JDK,cglib)实例代码