一、前提知识:
1.学习好设计模式中的“装饰者模式”和“代理模式”
2.学习好Filter组件基本使用

二、示例代码:

package cn.itcast.web.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 SensitiveWordsFilter implements Filter {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() {@Overridepublic 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.replaceAll(str,"***");}}}return  value;}//判断方法名是否是 getParameterMap//判断方法名是否是 getParameterValuereturn method.invoke(req,args);}});//2.放行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 (Exception e){e.printStackTrace();}}public void destroy() {}}

java过滤器Filter实现敏感词汇过滤相关推荐

  1. java过滤器filter过滤某个包_Java过滤器Filter使用详解

    过滤器 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应. 如 ...

  2. Java基于Socket实现聊天、群聊、敏感词汇过滤功能

    首先的话,这个代码主要是我很久以前写的,然后当时还有很多地方没有理解,现在再来看看这份代码,实在是觉得丑陋不堪,想改,但是是真的改都不好改了- 所以,写代码,规范真的很重要. 实现的功能: 用户私聊 ...

  3. 动态代理的分析以及利用动态代理模式进行敏感词汇过滤

    动态代理 增强对象的功能: 设计模式:一些通用的解决固定问题的方式 代理模式 概念: (1). 真实对象:被代理的对象 (2). 代理对象: (3). 代理模式:代理对象代理真实对象,达到增强真实对象 ...

  4. Java过滤器Filter使用详解

    <div id="post_detail"> 转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6374212.html 在我的项目 ...

  5. 【敏感词汇过滤算法】基于DFA-前缀树的敏感词汇过滤算法(项目实用)

    在敏感词汇过滤这块,不同的算法所造成的性能差异是非常大的,选择一个合适的算法非常重要.因为以前做算法的时候做过类似前缀树的字符串匹配之类的算法,所以一开始就打算用前缀树做的,后面了解了一下DFA的相关 ...

  6. 优秀博客 --敏感词汇过滤

    2019独角兽企业重金招聘Python工程师标准>>> 敏感词汇过滤 http://www.cnblogs.com/chenssy/p/3751221.html#2966041 树上 ...

  7. PHP敏感词汇过滤SDK(树形结构遍历命中违禁词)

    先介绍一下匹配敏感词原理吧,因为没有工具,画的很糙,有疑问直接联系我.(绿色箭头代表命中敏感词,灰色:未命中) base 确定有穷自动机(DFA)算法 比如说"可以"是敏感词,那么 ...

  8. Filter - 通过拦截器与动态代理实现敏感词汇过滤

    需求:将敏感词汇.txt文件中的词语过滤为 -> "***" 分析: 首先加载文档,将文档中的词汇纳入集合中备用,方便后期比对使用. 使用Proxy动态代理将request对 ...

  9. java 过滤器Filter

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  10. Java过滤器Filter讲解(Java基础)

    你好我是辰兮,很高兴你能来阅读,本篇文章小结了Java过滤器的知识点,献给初学者,分享获取新知,希望我们一起进步. 文章目录 一.什么是过滤器 二.如何编写过滤器 三. 过滤器的配置 四.Filter ...

最新文章

  1. linux安装硬盘命令,硬盘安装linux的两条命令
  2. HTML在表格右边增加一个表格,如何在表格右侧增加一列
  3. LINUX安装REDIS集群
  4. mysql 主从 keepalived_一次mysql主从加keepalived配置搭建及切换演示
  5. 数据库元数据数据字典查询_1_列出模式中所有的表
  6. SpringMVC+Hibernate +MySql+ EasyUI实现POI导出Excel(二)
  7. EventLoopGroup 与Reactor 关联
  8. “大胃王”吃播注意了 国家明确禁止发布量大多吃、暴饮暴食等节目
  9. 编程练习赛11B 物品价值(装压dp)
  10. Ubuntu Git安装与使用
  11. 创建可扩展性系统-12
  12. linux操作系统基础及应用课后答案,Linux操作系统课后习题答案及复习要点
  13. Linux下好用的类似QQ截图工具
  14. 机器视觉笔记:RANSAC算法以及思想
  15. (arxiv-2022)具有自适应距离对齐的时空步态特征
  16. jitsi各工程编译笔记(一)各工程大概
  17. C语言有哪些冷知识?
  18. 【CV】Mask R-CNN:用于目标实例分割的通用框架
  19. excel表格汇总数据之汇总关键词工作表
  20. 【C语言】C语言复习笔记

热门文章

  1. 博弈算法实现简单五子棋
  2. jieba 中文分词使用教程
  3. 修改echarts 3D柱状图柱子大小(粗细)的方法
  4. 软件体系结构风格整理
  5. 分享一款影视源码_爱客影院网站3.5.6版本
  6. 最新爱客影院自动采集源码v3.5.5
  7. 吊打Navicat?这款神器牛逼了~~ [ 必看 ]
  8. 终极算法——第二章:终极算法
  9. servlet异步请求
  10. 极简Markdown程序员简历模板