案例-敏感词汇过滤
案例-敏感词汇过滤
需求:
- 对day_06案例录入的数据进行敏感词汇过滤
- 敏感词汇参考《敏感词汇.txt》
- 如果敏感词汇 替换为***
分析:
- 对request对象进行增强 增强获取参数相关方法
- 放行 传递代理对象
拦截器代码
package com.bai.Filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.BufferedReader; 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; @WebFilter("/*") public class SensitivWordsFilter implements Filter { private List<String> list = new ArrayList<String>();//敏感词汇集合 public void init(FilterConfig filterConfig) throws ServletException { try{ //获取文件真实路径 ServletContext servletContext = filterConfig.getServletContext(); String realPath = servletContext.getRealPath("src\\敏感词汇.txt"); //读取文件 BufferedReader br = new BufferedReader(new FileReader(realPath)); //将文件的每一行添加到list中 String line=null; while ((line = br.readLine())!=null){ list.add(line); } br.close(); System.out.println(list); }catch(Exception e){ e.printStackTrace(); } } public void doFilter(final ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { ServletRequest proxy_lenovo = (ServletRequest) Proxy.newProxyInstance(servletRequest.getClass().getClassLoader(), servletRequest.getClass().getInterfaces(), new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //增强getParameter方法 //判断是否是getParameter方法 if (method.getName().equals("getParameter")){ //增强返回值 //获取返回值 String value = (String) method.invoke(servletRequest, args); if (value!=null){ for (String str : list) { if (value.contains(str)){ value=value.replaceAll(str,"***"); } } } return value; } return method.invoke(servletRequest,args); } }); //放行 filterChain.doFilter(servletRequest,servletResponse); } public void destroy() { } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本