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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Filter实现敏感词汇过滤

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

太晚了,就不文字說明了直接貼代碼,注意增強的是相關方法與參數

package cn.itcast.web.filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; 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;/* * * 敏感詞匯過濾實現 * */ @WebFilter("/*") public class SensitiveFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {//創建代理對象增強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方法//判斷是否為getParameter方法 if (method.getName().equals("getParameter")) {//增強返回值//獲得返回值String value = (String) method.invoke(req, args);if(value != null){for (String str : list) {if(value.contains(str)){value = value.replaceAll(str, "***");}}}return value;}return method.invoke(req,args);//注意這塊傳遞的是真實對象,與參數}});chain.doFilter(proxy_req, resp);}private List<String> list = new ArrayList<String>();//敏感詞匯的listpublic void init(FilterConfig config) throws ServletException {try {//1.加載配置文件,獲得文件的realPathServletContext servletContext = config.getServletContext();//servletContext是一個域對象,可以讀取全局配置參數String realPath = servletContext.getRealPath("/WEB-INF/classes/sensitive.txt");//獲取文件的一個真實路徑//2.讀取文件BufferedReader br = new BufferedReader(new FileReader(realPath));//此時數據以及加載到BufferedReader緩沖器中//3.讀取br將每一行數據添加到list集合中String line = null;while((line = br.readLine())!= null){list.add(line);}br.close();System.out.println(list);} catch ( Exception e) {e.printStackTrace();}}}

總結

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

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