这篇文章主要介绍了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动态代理静态代理实例分析,包括了Java动态代理静态代理实例分析的使用技巧和注意事项,需要的朋友参考一下 代理模式:为其他对象提供一种代理以控制某个对象的访问。用在:在某些情况下,一个客户不想或者不能直接访问另一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用,代理对象还可以完成它附加的操作。 例子:就像房东、租客、中介的关系。中介(代理对象)为房东(真实对象)出租
本文向大家介绍Java对象流实例代码,包括了Java对象流实例代码的使用技巧和注意事项,需要的朋友参考一下 将日期对象和向量对象写入文件,然后从文件中读出并输出到屏幕上 对象输入流)可读取使用对象输出流写入的原始数据和类型,与文件输入输出流一起可以实现对象的持久性存储。 结果: Fri Jul 24 11:28:01 CST 2015 [不求有功, 才华出众, 瞬息万变] 成功构建 (总时间: 2
问题内容: 除了在主机上手动更改系统时钟之外,是否可以通过代码或JVM参数覆盖通过呈现的当前时间? 一点背景: 我们有一个系统,该系统运行许多会计工作,这些工作围绕其当前日期(例如,每月的1号,每年的1号等)进行逻辑转换。 不幸的是,许多传统代码都调用诸如或的函数,而这两个函数最终都调用到。 出于测试目的,现在,我们不得不手动更新系统时钟,以操纵代码认为正在运行测试的时间和日期。 所以我的问题是:
本文向大家介绍java 反射和动态代理详解及实例代码,包括了java 反射和动态代理详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 一、java中的反射 1.通过反射加载类的属性和方法实例代码: 2.类加载器ClassLoader 3.动态代理 静态代理:代理类和目标对象的类型都是在编译期间确定下来,不利于程序的扩展。同时每个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。
问题内容: 实际上,这不是一个问题,但实际上我需要您的意见…我把他的帖子放在这里是因为我知道您一直都很活跃,所以请不要认为这是一个坏问题并与我分享您的意见。 我已经使用Java动态代理来集中化在独立模式下使用的JPA代码,这是动态代理代码: 这是包含更多信息的链接(http://m-hewedy.blogspot.com/2010/04/using-dynamic-proxies-to- cent
本文向大家介绍java利用DFA算法实现敏感词过滤功能,包括了java利用DFA算法实现敏感词过滤功能的使用技巧和注意事项,需要的朋友参考一下 前言 敏感词过滤应该是不用给大家过多的解释吧?讲白了就是你在项目中输入某些字(比如输入xxoo相关的文字时)时要能检 测出来,很多项目中都会有一个敏感词管理模块,在敏感词管理模块中你可以加入敏感词,然后根据加入的敏感词去过滤输 入内容中的敏感词并进行相应的