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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Filter动态代理敏感词汇过滤

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

Filter敏感詞匯過濾

  • 對request對象的getParamater()、getParameterMap()和getParameterValues()這三個方法進(jìn)行增強,產(chǎn)生一個新的request對象
  • 放行,傳遞代理對象,將新request對象傳入
  • 動態(tài)代理增強對象的功能

    設(shè)計模式:通用的解決固定問題的方式
    1. 裝飾模式

    2. 代理模式

    【概念】

  • 真實對象:被代理的對象

  • 代理對象

  • 代理模式:代理對象代理真實對象,達(dá)到增強莫實對象功能的目的

  • 【實現(xiàn)方式】

  • 靜態(tài)代理:有一個類文件描述代理模式

  • 動態(tài)代理:在內(nèi)存中形成代理類

  • 【動態(tài)代理實現(xiàn)步驟】

  • 代理對象和真實對象實現(xiàn)相同的接口

  • 代理對象 = Proxy. newProxyInstance();

  • 使用代理對象調(diào)用方法

  • 增強方法

  • 增強方式

  • 增強參數(shù)列表

  • 增強返回值類型

  • 增強方法體執(zhí)行邏輯

  • 動態(tài)代理敏感詞匯過濾實現(xiàn)

    1.創(chuàng)建敏感詞匯列表

    此處一定要注意txt文件的存放路徑,否則可能導(dǎo)致輸入流無法讀取文件

    【放在src下】

    /WEB-INF/classes/敏感詞匯.txt

    【放在src下的web下的filter中】

    /WEB-INF/classes/com.iqqcode.userquary.web.filter/敏感詞匯.txt

    【txt中自定義敏感詞匯】

    2. 定義敏感詞匯過濾器Filter類

    SensitiveListener

    package com.iqqcode.userquary.web.filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; import java.io.BufferedReader; import java.io.FileReader; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.*;/*** @Author: Mr.Q* @Date: 2020-02-28 20:16* @Description:Filter敏感詞匯過濾器*/ @WebFilter("/*") public class SensitiveListener implements Filter {@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {//1.創(chuàng)建代理對象,增強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;}//判斷方法名是否是 getParameterValueif (method.getName().equals("getParameterValues")) {//獲取參數(shù)的值String[] values = (String[]) method.invoke(req, args);//定義一個新數(shù)組String[] newValues = new String[values.length];//遍歷數(shù)組if (values != null) {for (int i = 0; i < values.length; i++) {for (String s : list) {if (values[i].contains(s)) {newValues[i] = values[i].replaceAll(s, "***");break;} else {newValues[i] = values[i];}}}return newValues;}}//判斷方法名是否是getParameterMapif (method.getName().equals("getParameterMap")) {//增強getParameterMap方法//獲取參數(shù)Map<String, String[]> map = (Map<String, String[]>) method.invoke(req, args);//定義一個新的map集合Map<String, String[]> newMap = new HashMap<String, String[]>();Set<String> keySet = map.keySet();for (String key : keySet) {String[] values = map.get(key);//定義一個String數(shù)組String[] newValues = new String[values.length];if (values != null) {for (int i = 0; i < values.length; i++) {//遍歷集合for (String s : list) {if (values[i].contains(s)) {newValues[i] = values[i].replaceAll(s, "***");break;} else {newValues[i] = values[i];}}}}newMap.put(key, newValues);}return newMap;}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.將文件的每一行數(shù)據(jù)添加到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() { } }

    注意事項:

  • 在使用BufferedReader字符緩沖輸入流讀取文件時,要注意編碼問題

  • 在放行請求時,調(diào)用chain的doFilter方法,要注意把代理對象傳進(jìn)去,而不是真實對象

    chain.doFilter(proxy_req, resp);
  • 一定要注意返回值的類型

    • request調(diào)用getParameter()方法時,返回的是String

    • 調(diào)用getParameterMap方法時,返回的是Map集合,鍵是String,值是String類型的數(shù)組

    • 調(diào)用getParameterValues()方法時,返回的是一個String類型的數(shù)組

  • 3.測試

    定義TestServlet類測試
    @WebServlet("/testSensitiveServlet") public class TestSensitiveServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");String msg = request.getParameter("msg");System.out.println(name + " : " + msg);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);} }

    http://localhost:8080/UserQuery/testSensitiveServlet?name=張三&msg=小雞是菜雞

    在信息添加功能中驗證

    SensitiveListener放在servlet包下即可以攔截項目中的敏感詞匯信息



    【參考文章】:JavaEE 使用Filter實現(xiàn)敏感詞匯過濾器

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品国产伦一区二区三区免费 | 九九热伊人 | 成年人免费小视频 | 一级中文字幕 | 欧美a级成人淫片免费看 | 国产福利精品在线观看 | 天天躁日日躁狠狠躁喷水 | 欧美高清另类 | 欧美午夜理伦三级在线观看 | 日本爽爽爽爽爽爽在线观看免 | av高清一区| 91n视频| 狠狠躁夜夜躁人爽 | 日韩在线观看视频一区二区 | 污漫网站 | 美女扒开腿让男人操 | 曰批又黄又爽免费视频 | youjizzcom日本| 亚洲乱码一区二区 | 国产精品二区一区二区aⅴ 一卡二卡三卡在线观看 | 日本中文字幕不卡 | 中文字幕精品久久久久人妻红杏1 | 久操中文| 久久精品国产亚洲av久 | 成人h视频| 手机在线一区 | 中文字幕人成 | 潮喷失禁大喷水无码 | 成人看片网| 成年人三级网站 | 成人一二三 | 欧美熟妇精品一区二区蜜桃视频 | 亚洲爱v | 色av性av丰满av | 青草国产 | 婷婷开心激情网 | 粗大黑人巨茎大战欧美成人免费看 | 久久久国产免费 | xxxx国产 | 麻豆精品av | 丰满少妇xoxoxo视频 | 丝袜高跟av | 少妇大叫太粗太大爽一区二区 | 亚洲国产成人精品女人久久久 | 日本女人黄色 | 正在播放经典国语对白 | 一区二区三区不卡视频在线观看 | 女人的天堂av | 天天射干 | 竹菊影视一区二区三区 | 亚洲六月婷婷 | 美女亚洲一区 | 欧美一区二区三区日韩 | 男插女视频网站 | 中文字幕人妻无码系列第三区 | 中文字幕第一页在线 | 免费国产网站 | 91视频观看 | 欧美日韩视频在线 | 亚洲精品xxxxx| 国产一级二级三级在线 | 精品国产精品网麻豆系列 | 国产精品91一区 | 91在线公开视频 | 伊人网在线 | av免费播放网站 | 玉米地疯狂的吸允她的奶视频 | 中文字幕在线2019 | 亚洲久久久久久久 | www.日韩av| 亚洲成人免费在线观看 | 欧美第一页在线观看 | 免费亚洲精品 | 日韩欧美不卡视频 | 办公室荡乳欲伦交换bd电影 | 内地级a艳片高清免费播放 91在线精品一区二区 | 青青青草视频在线 | 美女隐私无遮挡网站 | 艹少妇视频 | av在线日韩 | 禁漫天堂免费网站 | 成人免费看高清电影在线观看 | 人人人人爽 | 欧美日韩在线观看一区二区三区 | 国产最新av | 成人第一页 | 中文精品无码中文字幕无码专区 | 日本在线不卡一区二区 | 亚洲欧美日韩国产一区二区 | 欧美日韩字幕 | 青草久久久久 | 国产免费视频一区二区三区 | 波多野结衣办公室33分钟 | 中国女人内谢69xxxx | 亚州av在线播放 | 国产福利片在线观看 | 男人天堂社区 | 99九九热 | 日韩中文在线一区 |