您好,登錄后才能下訂單哦!
這篇文章主要介紹了JAVA使用動態代理對象進行敏感字過濾代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
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、創建代理對象,增強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方法 //如果是,增強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.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、獲取文件的真實路徑 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(); } } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。