软件编程
位置:首页>> 软件编程>> java编程>> JAVA使用 * 对象进行敏感字过滤代码实例

JAVA使用 * 对象进行敏感字过滤代码实例

作者:小猪_佩奇  发布时间:2021-07-29 13:27:26 

标签:java,动态,代理,敏感,过滤

这篇文章主要介绍了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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com