日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Filter过滤器|敏感词汇过滤

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Filter过滤器|敏感词汇过滤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、需求及分析
  • 二、過濾器
  • 三、xml配置
  • 四、測試sevlet


一、需求及分析

(1)對錄入的數據進行敏感詞匯過濾。
(2)敏感詞匯參考 敏感詞匯.txt文檔
(3)如果是敏感詞匯,替換為"***"。

分析:使用代理模式對request對象進行增強,增強獲取參數相關方法(getParameter等)。然后放行,傳遞代理對象。以getParameter為例,getParameterMap,getParameterValue與getParameter的邏輯一樣。

二、過濾器

  • @WebFilter(value="/*"):使用注解配置,對所有的servlet都進行過濾。
  • 注意在init()方法中將敏感詞匯.txt文件中的每一條敏感語句都放進了list集合中,這個使用流操作的方式要熟練。
  • 使用流操作默認使用gbk編碼,所以注意要將敏感詞匯.txt中的編碼也該改為gbk。
  • 在src下創建了一個名為"敏感詞匯.txt"的文件,其中的敏感詞匯如下:

package com.gql.filter; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.ArrayList; import java.util.List; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter;import sun.text.normalizer.Replaceable;/*** 類說明: * 敏感詞匯過濾器* * @author qianliangguo*/ @WebFilter(value="/*") public class SensitiveFilter implements Filter {@Overridepublic void doFilter(final ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {// 1.創建代理對象,增強getParameter方法ServletRequest Proxy_req = (ServletRequest)Proxy.newProxyInstance(req.getClass().getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {//判斷是否是getParameter方法if("getParameter".equals(method.getName())){String value = (String) method.invoke(req, args);if(value != null){for (String str : list) {if(value.contains(str)){value = value.replace(str, "***");}}}return value;}return method.invoke(req, args);}});// 2.放行chain.doFilter(Proxy_req, resp);}private List<String> list = new ArrayList<String>();//敏感詞匯集合@Overridepublic void init(FilterConfig config) throws ServletException {try {//1.加載文件ServletContext servletContext = config.getServletContext();String realPath = servletContext.getRealPath("/WEB-INF/classes/敏感詞匯.txt");//2.讀取文件BufferedReader br= new BufferedReader(new FileReader(realPath));//3.將文件的每一行添加到list集合中String line = null;while((line = br.readLine())!=null){list.add(line);}br.close();System.out.println(list);} catch (Exception e) {e.printStackTrace();}}@Overridepublic void destroy() {// TODO Auto-generated method stub} }

三、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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" ><display-name></display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><description>This is the description of my J2EE component</description><display-name>This is the display name of my J2EE component</display-name><servlet-name>testServlet</servlet-name><servlet-class>com.gql.filter.testServlet</servlet-class></servlet><servlet-mapping><servlet-name>testServlet</servlet-name><url-pattern>/testServlet</url-pattern></servlet-mapping> </web-app>

四、測試sevlet

package com.gql.filter;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;/*** 類說明:* 測試敏感詞匯* @author qianliangguo*/ public class testServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {String name = req.getParameter("name");String msg = req.getParameter("msg");System.out.println(name+":"+msg);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doPost(req, resp);} }

在瀏覽器地址欄輸入:http://localhost:8080/Filter/testServlet?name=用戶&msg=嚶嚶嚶,周冬雨你是大壞蛋。返回出的結果如下:

測試成功。

總結

以上是生活随笔為你收集整理的Filter过滤器|敏感词汇过滤的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。