欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-12 09:38:56
 我们在聊天的时候的或者留言的时候,有部分词是不允许发表出来。我们可以采用过滤器实现这个功能。 我们只是简单利用过滤器实现这个过滤的功能,有些地方没写的很全...

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

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

前台代码:

<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里面的代码:

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

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

代码:

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里面的数据存到数据库中,方便维护,当然也可以写增删改查等 
} 

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

效果图;

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

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

以上所述是小编给大家介绍的使用javaee filter 过滤敏感词的方法的相关知识,希望对大家有所帮助