最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA使用動態(tài)代理對象進(jìn)行敏感字過濾代碼實(shí)例

 更新時(shí)間:2019年09月18日 09:33:53   作者:小豬_佩奇  
這篇文章主要介紹了JAVA使用動態(tài)代理對象進(jìn)行敏感字過濾代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了JAVA使用動態(tài)代理對象進(jìn)行敏感字過濾代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

package com.hopetesting.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
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;
/**
 * @author newcityman
 * @date 2019/9/13 - 19:41
 */
@WebFilter("/*")
public class SensitiveWordsFilter implements Filter {
  public void destroy() {
  }
  public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    //1、創(chuàng)建代理對象,增強(qiáng)getParameter方法
    ServletRequest proxy_req = (ServletRequest) Proxy.newProxyInstance(req.getClass().getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {
      @Override
      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //判斷是否是getParameter方法
        //如果是,增強(qiáng)getParameter方法
        if (method.getName().equals("getParameter")) {
          //增強(qiáng)返回值
          //獲取返回值
          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);
      }
    });
    chain.doFilter(proxy_req, resp);
  }
  private List<String> list = new ArrayList<String>(); //敏感詞匯集合
  public void init(FilterConfig config) throws ServletException {
    try {
      //1、獲取文件的真實(shí)路徑
      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 (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中事半功倍的工具類合集分享

    SpringBoot中事半功倍的工具類合集分享

    在日常開發(fā)中經(jīng)常有這樣那樣的小功能需要實(shí)現(xiàn),這些一般會作為工具類存在,在項(xiàng)目中有一些通用的功能,Spring內(nèi)置了需要工具類,而且經(jīng)過了大量的驗(yàn)證,可以在開發(fā)中助你一臂之力,快跟隨小編一起來看看吧
    2023-02-02
  • springboot與dubbo的版本匹配問題

    springboot與dubbo的版本匹配問題

    這篇文章主要介紹了springboot與dubbo的版本匹配問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Action訪問Servlet的API的簡單實(shí)例

    Action訪問Servlet的API的簡單實(shí)例

    下面小編就為大家?guī)硪黄狝ction訪問Servlet的API的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • SpringBoot中TypeExcludeFilter的作用及使用方式

    SpringBoot中TypeExcludeFilter的作用及使用方式

    在SpringBoot應(yīng)用程序中,TypeExcludeFilter通過過濾特定類型的組件,使它們不被自動掃描和注冊為bean,這在排除不必要的組件或特定實(shí)現(xiàn)類時(shí)非常有用,通過創(chuàng)建自定義過濾器并注冊到spring.factories文件中,我們可以在應(yīng)用啟動時(shí)生效
    2025-01-01
  • Hadoop源碼分析二安裝配置過程詳解

    Hadoop源碼分析二安裝配置過程詳解

    本篇是Hadoop源碼分析系列文章第二篇,主要介紹Hadoop安裝配置的詳細(xì)過程,后續(xù)本系列文章會持續(xù)更新,有需要的朋友可以借鑒參考下
    2021-09-09
  • Java線程阻塞工具LockSupport用法詳解

    Java線程阻塞工具LockSupport用法詳解

    Java中的LockSupport是一個(gè)用于線程同步的工具類,它提供了一種基于線程的阻塞和喚醒機(jī)制,LockSupport可以讓線程在特定條件下阻塞掛起,等待其他線程發(fā)送信號來喚醒它,本文將通過一個(gè)小案例給大家介紹一下LockSupport怎么用,讓你永遠(yuǎn)記住它
    2023-08-08
  • Intellij IDEA全局替換快捷鍵整理

    Intellij IDEA全局替換快捷鍵整理

    這篇文章主要給大家介紹了關(guān)于Intellij IDEA全局替換快捷鍵整理的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • SpringBoot整合Mybatis Plus實(shí)現(xiàn)基本CRUD的示例代碼

    SpringBoot整合Mybatis Plus實(shí)現(xiàn)基本CRUD的示例代碼

    Mybatis Plus是在Mybatis的基礎(chǔ)上的增強(qiáng),使得我們對一些基本的CRUD使用起來更方便,本文主要介紹了SpringBoot整合Mybatis Plus實(shí)現(xiàn)基本CRUD的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-05-05
  • Idea中如何調(diào)出Run dashboard 或services窗口

    Idea中如何調(diào)出Run dashboard 或services窗口

    這篇文章主要介紹了Idea中如何調(diào)出Run dashboard 或services窗口問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 基于Consumer接口、Predicate接口初使用

    基于Consumer接口、Predicate接口初使用

    這篇文章主要介紹了Consumer接口、Predicate接口初使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

兴化市| 句容市| 武义县| 林口县| 简阳市| 正安县| 荔浦县| 平邑县| 蚌埠市| 土默特右旗| 虹口区| 青河县| 怀柔区| 泾源县| 旬阳县| 桐庐县| 吴忠市| 含山县| 玉田县| 开平市| 海兴县| 玉林市| 睢宁县| 施甸县| 富裕县| 溆浦县| 渭源县| 永嘉县| 安龙县| 河北省| 伊金霍洛旗| 若尔盖县| 沙洋县| 通道| 如皋市| 江陵县| 南华县| 通渭县| 和平区| 临西县| 石嘴山市|