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

网友投稿 235 2023-07-17


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

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

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

前台代码:

姓名:

留言内容:

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 list=WordUtils.getword();

for(String ll:list){

words=words.replace(ll, "*");//敏感词汇采用**代替

}

return words;

}

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

public class WordUtils {

//采用单例模式

private static List list =new ArrayList();//我们可以从这访问数据库中存的敏感词汇,封装成list返回

static {//手动添加几个

list.add("坑货");

list.add("骂人");

list.add("傻逼");

}

public static List getword(){

return list;

}

public static void addWord(String name){

list.add(name);

}

public static void sava(){

//这里可以list里面的数据存到数据库中,方便维护,当然也可以写增删改查等

}

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

效果图;

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

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:辨析Java中的String与StringBuffer及StringBuilder字符串类
下一篇:详解ZXing
相关文章

 发表评论

暂时没有评论,来抢沙发吧~