我们在聊天的时候的或者留言的时候,有部分词是不允许发表出来。我们可以采用过滤器实现这个功能。
我们只是简单利用过滤器实现这个过滤的功能,有些地方没写的很全
前台代码:
<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 过滤敏感词的方法的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对phpstudy网站的支持!
本文地址:https://www.stayed.cn/item/25614
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我