我們在聊天的時候的或者留言的時候,有部分詞是不允許發表出來。我們可以采用過濾器實現這個功能。
我們只是簡單利用過濾器實現這個過濾的功能,有些地方沒寫的很全
前臺代碼:
1
2
3
4
5
6
7
|
<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里面的代碼:
僅僅只是把從前臺收的數據讀取出來??蠢锩娴?a href="/article/1285.html">敏感詞是都過濾。
代碼:
1
2
3
4
5
6
7
8
|
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,所以我們只需要在半路將其攔截,修改里面的值就可以實現過濾了。采用了包裝的設計模式;
過濾器代碼:
1
2
3
4
5
6
|
FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest) request; MyFilter myf = new MyFilter(req); chain.doFilter(myf, response); //采勇我們加強的類的request,傳給后面的servlet使用 } |
自己手動寫一個myFilter類來修改里面我們需要用到的函數。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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; } |
為了方便維護,我們的敏感詞匯的獲取專門寫了一個工具,方便取,當然也方便管理員添加進去。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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 過濾敏感詞的方法的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!