文章目录

  • 需求
  • 效果
  • 步骤
  • 代码

需求

当用户发言内容里有敏感词汇时,将敏感词汇变为***并在页面输出

效果

1、用户发言
2、对敏感词汇“傻逼”进行过滤,显示发言内容

步骤

1、在工程src源文件下添加文件 敏感词汇.txt
2、新建一个Filter。在filter的init方法下,读取敏感词汇.txt文件里的敏感词汇,将每一个敏感词汇添加到一个list中。在filter的doFilter方法中,在放行资源之前,使用动态代理方式,增强获取参数相关方法。
3、新建一个Servlet,获取参数值并显示内容。

代码

package com.li.web;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;@WebFilter( "/*")
public class FilterDemo implements Filter {public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {//创建动态代理ServletRequest request =(ServletRequest) Proxy.newProxyInstance(req.getClass().getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//对执行的方法进行过滤if(method.getName().equals("getParameter")){//将敏感词汇进行过滤//真实对象执行re.getParameter方法,该方法返回值是参数值,是String类型的String value =  (String) method.invoke(req,args);if(value!=null){for (String str : list) {if(value.contains(str)){value = value.replaceAll(str, "***");}}}//System.out.println("filter"+value);return value;}return  method.invoke(req,args);}});//放行,第一个参数是代理对象,chain.doFilter(request, resp);}ArrayList<String> list = new ArrayList<String>();//初始化方法中加载资源,这里将敏感词汇添加到list中public void init(FilterConfig config) throws ServletException {try  {//获取文件真实路径ServletContext servletContext = config.getServletContext();String realPath = servletContext.getRealPath("/WEB-INF/classes/敏感词汇.txt");// 读取文件BufferedReader br = new BufferedReader(new FileReader(realPath));//将文件的每一行数据添加到list中String line = null;while((line=br.readLine())!=null){list.add(line);}System.out.println(list);br.close();}catch (Exception e){e.printStackTrace();}}}

使用java实现敏感词汇过滤功能相关推荐

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

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

  2. java敏感词屏蔽器,“敏感词过滤”功能设置

    "敏感词过滤"功能设置 "敏感词过滤"是指对互联网发布的言论和文章中含有的敏感词进行过滤.敏感词经过在互联网的传播和扩散会影响社会的稳定和用户的使用.云锁的&q ...

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

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

  4. Java实现敏感词过滤 - IKAnalyzer中文分词工具

    IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包. 官网: https://code.google.com/archive/p/ik-analyzer/ 本用例借助 I ...

  5. Java实现敏感词过滤双向词库完美跳过24口交换机

    Java实现敏感词过滤jar包3.0版本发布,采用双向词库,当检索语句中敏感词交错在正向词库中时,比较词汇level,如果正向词汇的level大于敏感词的level,则跳过此敏感词.完美过滤,&quo ...

  6. Java实现敏感词过滤

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

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

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

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

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

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

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

  10. java dfa 敏感词_java利用DFA算法实现敏感词过滤功能

    前言 敏感词过滤应该是不用给大家过多的解释吧?讲白了就是你在项目中输入某些字(比如输入xxoo相关的文字时)时要能检 测出来,很多项目中都会有一个敏感词管理模块,在敏感词管理模块中你可以加入敏感词,然 ...

最新文章

  1. MySQL 索引条件下推 Index Condition Pushdown
  2. Aix oracle 自动启动,AIX如何自动启动和关闭软件的运行
  3. PyQt5基础——3
  4. Python学习笔记----基础篇10----模块2
  5. 养老不用愁,这种机器人可以让老年人自主地进行日常生活
  6. linux下安装jmeter
  7. getmany返回值 gjson_序列化多个模型并在一个JSON响应中发送所有Django Rest框架
  8. web前端新手最容易出现的4个错误,你有出错过吗?
  9. php代码正确 插不进表,在表中插入值在PHP中不工作,使用
  10. PC-hosts 的使用 [可使电脑无法正常上网]
  11. 单次目标检测器之YOLO I
  12. paip.python php的未来预测以及它们的比较优缺点
  13. 在一个窗口显示多个视频子窗口
  14. Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript
  15. ftp服务器目录创建文件夹权限设置,ftp服务器 创建文件夹权限设置
  16. 塔夫茨计算机科学,塔夫茨大学计算机科学研究生语言及申请要求-费用-课程设置...
  17. go 四种 base64 编码实现方式
  18. 怎么更改图片尺寸?怎么修改图片的长宽尺寸?
  19. 用echarts做双y轴折线图柱状图混合实时更新图
  20. 阿里天池-全球数据智能大赛

热门文章

  1. MTK camera tuning学习中遇到的一些问题(调试前)
  2. axure 破解 key
  3. XML注释内容中不能出现“--”
  4. DWS自动化包裹称重扫码测体积快手台的开发和源码
  5. linux设备驱动程序之时钟管理
  6. 学习django笔记(天天生鲜)
  7. 人口matlab数学模型,基于MATLAB构建人口数学模型研究二胎开放对中国人口的影响...
  8. 邹博机器学习算法最新版 --- 献给想要入门、或者想要进阶的朋友
  9. 计算机-计算机发展史
  10. 点击谷歌浏览器安装包没有反应