JavaEE Filter敏感词过滤的方法实例详解

 更新时间:2024年07月24日 17:17:02   作者:YX_blog  
我们无论是在聊天还是在留言时,都有一些信息不希望别人看到。那么如果过滤这些关键词呢?下面小编给大家分享JavaEE Filter敏感词过滤的方法实例详解,感兴趣的朋友一起学习吧

 我们在聊天的时候的或者留言的时候,有部分词是不允许发表出来。我们可以采用过滤器实现这个功能。

我们只是简单利用过滤器实现这个过滤的功能,有些地方没写的很全

前台代码:

<body> 
<form action="<c:url value='/WordServlet'/>" method="post"> 
姓名:<input type="text" name="name"/><br/> 
留言内容:<textarea rows="10" cols="10" name="textarea"></textarea><br/> 
<input type="submit" value="提交"/> 
</form> 
</body> 

Servlet里面的代码:

仅仅只是把从前台收的数据读取出来。看里面的敏感词是都过滤。

代码:

public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
String name =request.getParameter("name");//名字 
String text=request.getParameter("textarea");//浏览内容 
PrintWriter pw =response.getWriter(); 
pw.println("name="+name);//这里直接输出,仅仅只是为了查看能否过滤那些关键字。。 
pw.print("内容"+text); 
}

过滤器:

过滤的作用就可以体现了,过滤器的是在客户端访问服务器的之间进行拦截的。

我们知道过滤器能够控制request和response,所以我们能够对这个进行下手。

从客户端请求是request,所以我们只需要在半路将其拦截,修改里面的值就可以实现过滤了。采用了包装的设计模式;

过滤器代码:

public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 
HttpServletRequest req=(HttpServletRequest) request; 
MyFilter myf =new MyFilter(req); 
chain.doFilter(myf, response);//采勇我们加强的类的request,传给后面的servlet使用 
} 

自己手动写一个myFilter类来修改里面我们需要用到的函数。

class MyFilter extends HttpServletRequestWrapper{ 
//这是采用包装模式 
public MyFilter(HttpServletRequest request) { 
super(request); 
} 
@Override //从写这个方法 
public String getParameter(String name) { 
String words =super.getParameter(name); 
System.out.println(words);//过滤前的文字 
List<String> list=WordUtils.getword(); 
for(String ll:list){ 
words=words.replace(ll, "*");//敏感词汇采用**代替 
} 
return words; 
} 

为了方便维护,我们的敏感词汇的获取专门写了一个工具,方便取,当然也方便管理员添加进去。

public class WordUtils { 
//采用单例模式 
private static List<String> list =new ArrayList<String>();//我们可以从这访问数据库中存的敏感词汇,封装成list返回 
static {//手动添加几个 
list.add("坑货"); 
list.add("骂人"); 
list.add("傻"); 
} 
public static List<String> getword(){ 
return list; 
} 
public static void addWord(String name){ 
list.add(name); 
} 
public static void sava(){ 
//这里可以list里面的数据存到数据库中,方便维护,当然也可以写增删改查等 
} 

在这里,只要含有这个词的,全部会变成*

效果图;

总结:过滤器的强大,可以修改request和response对象一起,你需要调什么函数,我们就可以采用包装设计模式的方式修改这个函数,变成我们想要的效果,这个和代理设计模式有点类似。

以上所述是小编给大家介绍的使用JavaEE filter 过滤敏感词的方法的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java Junit单元测试实例详解

    Java Junit单元测试实例详解

    在本篇文章里小编给大家分享的是关于Java Junit单元测试的相关知识点内容,有兴趣的朋友们学习下。
    2019-11-11
  • springboot整合 xxl-job的项目实践

    springboot整合 xxl-job的项目实践

    XL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,它包括调度中心、执行器和Web管理控制台,本文就来介绍一下springboot整合 xxl-job的项目实践,感兴趣的可以了解一下
    2024-09-09
  • Springboot如何使用外部yml启动

    Springboot如何使用外部yml启动

    这篇文章主要介绍了Springboot如何使用外部yml启动问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java基础教程之Map遍历的5种方式

    Java基础教程之Map遍历的5种方式

    Map作为Java中的一种集合,以键值对的形式存放一批数据,经常会被我们应用在项目中,这篇文章主要给大家介绍了关于Java基础教程之Map遍历的5种方式,需要的朋友可以参考下
    2024-01-01
  • SpringCloud3.x集成BigQuery的代码实现

    SpringCloud3.x集成BigQuery的代码实现

    Google BigQuery 是一种高性能、可应用于大数据分析的公主云数据库服务,Spring Cloud 提供了完善的工具和核心功能,可以进行泛动分布应用构建,本文给大家介绍了SpringCloud3.x集成BigQuery的代码实现,需要的朋友可以参考下
    2025-01-01
  • 一篇文章带你了解JAVA面对对象应用

    一篇文章带你了解JAVA面对对象应用

    Java是一门面向对象的语言。对象是Java程序中的基本实体。除了对象之外Java程序同样处理基本数据。下面这篇文章主要给大家总结了关于Java中面向对象的知识点,需要的朋友可以参考借鉴,下面来一起看看吧
    2021-08-08
  • ThreadPoolExecutor中的submit()方法详细讲解

    ThreadPoolExecutor中的submit()方法详细讲解

    在使用线程池的时候,发现除了execute()方法可以执行任务外,还发现有一个方法submit()可以执行任务,本文就详细的介绍一下ThreadPoolExecutor中的submit()方法,具有一定的参考价值,感兴趣的可以了解一下
    2022-04-04
  • Java8新特性之重复注解(repeating annotations)浅析

    Java8新特性之重复注解(repeating annotations)浅析

    这篇文章主要介绍了Java8新特性之重复注解(repeating annotations)浅析,这个新特性只是修改了程序的可读性,是比较小的一个改动,需要的朋友可以参考下
    2014-06-06
  • Spring Cloud Gateway集成Sentinel流控详情

    Spring Cloud Gateway集成Sentinel流控详情

    这篇文章主要介绍了Spring Cloud Gateway集成Sentinel流控详情,Sentinel支持对Spring Cloud Gateway、Zuul等主流的API Gateway进行限流,需要的朋友可以参考一下
    2022-09-09
  • Java面试题冲刺第二十七天--JVM2

    Java面试题冲刺第二十七天--JVM2

    这篇文章主要为大家分享了最有价值的三道关于JVM的面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论