Filter to achieve the message board sensitive word filtering ...
The idea is very simple, our sensitive word here is directly put in first, the actual project, certainly exists in the Database. In filter filters, We first get the user to submit the message, if there is a sensitive word, we will use the * number to Replace.
Code Demo: index.jsp:
<%@ page language="java" import="java.util.*" pageencoding= "UTF-8"%><% @taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><! DOCTYPE HTML public "-//w3c//dtd HTML 4.01 transitional//en" ><html> <head> <title>Filter application example---sensitive Word filtering</title> </head> <body> <h2>Filter application example---sensitive Word filtering</H2> <form Action="<c:url value= '/noteservlet '/>" Method= "post">User Name:<input type="text" name="name" /><br/><br/> <fieldset> <legend>Message boards</legend> <textarea name="note" rows="ten" cols=" ></textarea> </fieldset> <input type="submit" value="message" /> </form> </body></html>
Wordsutil.java: a collection of sensitive words:
packagecn.hncu.pubs;Importjava.util.ArrayList;Importjava.util.List; public class wordsutil { Private Staticlist<string> list =NewArraylist<string> ();Static{//you should import the sensitive words from the database, i'll use the words here to simulateList.add ("curse."); List.add ("sb"); } public StaticList<string>Getwords(){returnList } public Static void ReBuild(){//store The contents of the list in a database---stored once per period}}
Noteservlet.java
Package CN. Hncu. servlet;Import Java. IO. IOException;Import Java. IO. PrintWriter;Import Javax. servlet. Servletexception;Import Javax. servlet. HTTP. HttpServlet;Import Javax. servlet. HTTP. HttpServletRequest;Import Javax. servlet. HTTP. HttpServletResponse;public class Noteservlet extends HttpServlet {public void doget (httpservletrequest request, httpservletresponse respon Se) throws servletexception, IOException {response. setContentType("text/html;charset=utf-8");PrintWriter out= Response. Getwriter(); out. println("get Message Not supported"); out. Close();} public void DoPost (httpservletrequest request, httpservletresponse Response) throws servletexception, Ioex Ception {response. setContentType("text/html;charset=utf-8");PrintWriter out= Response. Getwriter(); out. println("<! DOCTYPE HTML public \ "-//w3c//dtd HTML 4.01 transitional//en\" > "); out. println("<HTML>"); out. println("); out. println("<BODY>");String name = Request. GetParameter("name");If (name==null | | | name. Trim(). Length() <=0){ out. println("name cannot be empty!!!");}else{String words = Request. GetParameter("note"); out. println("<br/>"+name+"the Message is:<br/>"+ Words);} out. println("</BODY>"); out. println("</HTML>"); out. Flush(); out. Close();}}
Wordfilter.java: Sensitive Word filtering
packagecn.hncu.filter;Importjava.io.IOException;Importjava.util.List;Importjavax.servlet.Filter;Importjavax.servlet.FilterChain;Importjavax.servlet.FilterConfig;Importjavax.servlet.ServletException;Importjavax.servlet.ServletRequest;Importjavax.servlet.ServletResponse;Importjavax.servlet.http.HttpServletRequest;Importjavax.servlet.http.HttpServletRequestWrapper;Importcn.hncu.pubs.WordsUtil; public class wordfilter implements Filter{ @Override public void Init(filterconfig Filterconfig)throwsServletexception {}@Override public void DoFilter(servletrequest request, servletresponse response, filterchain Chain)throwsioexception, servletexception {request.setcharacterencoding ("utf-8");//in the filter with decorative mode to enhance the function of the original request //---getparamter () method for intercepting background callsMyrequest req =NewMyrequest ((httpservletrequest) request); Chain.dofilter (req, response);//release}@Override public void Destroy() {}}class Myrequest extends httpservletrequestwrapper{ public myrequest(httpservletrequest Request) {Super(request); }@Override publicStringGetParameter(String Name) {String str =Super. GetParameter (name); list<string> list = Wordsutil.getwords (); for(String Word:list) {str = Str.replaceall (word,"*"); }returnStr }}
Configure Web. XML
<?xml version= "1.0" encoding= "UTF-8"?><web-app version="3.0"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"xsi:schemalocation=" Http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "> <display-name></display-name> <filter> <filter-name>Wordfilter</filter-name> <filter-class>Cn.hncu.filter.WordFilter</filter-class> </filter> <filter-mapping> <filter-name>Wordfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>Noteservlet</servlet-name> <servlet-class>Cn.hncu.servlet.NoteServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Noteservlet</servlet-name> <url-pattern>/noteservlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></Web-app>
Demo Result:
The effect after filtering:
Full Project Link:
Https://github.com/chenhaoxiang/Java/tree/master/myWordsFilterWeb
Mywordsfilterweb.zip
Reprint please attach the original blog link:
http://blog.csdn.net/qq_26525215
Javaweb-filter Study (four) Filter examples of sensitive words