欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaWeb中的filter過濾敏感詞匯案例詳解

 更新時間:2016年11月19日 14:30:57   作者:借我執(zhí)拗如少年  
敏感詞、文字過濾是一個網站必不可少的功能,本篇文章主要介紹了JavaWeb中的filter過濾敏感詞匯案例,具有一定的參考價值,有需要的可以了解一下,

需求:對含有bad.txt中的敏感詞匯的句子進行替換,替換成星號

bad.txt放在src目錄下

笨蛋
壞蛋

FilterDemo

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;
//過濾敏感詞匯
@WebFilter("/*")
public class FilterDemo8 implements Filter {
    //讀取txt文件時將詞匯存入列表
    private List<String> list = new ArrayList<String>();
    public void destroy() {
    }
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //通過代理增強方法
        ServletRequest proxy = (ServletRequest) Proxy.newProxyInstance(req.getClass().getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                //判斷方法是否為getParameter
                if (method.getName().equals("getParameter")){
                    String obj = (String) method.invoke(req, args);
                    if (obj != null){
                        //遍歷后替換詞匯
                        for (String s : list) {
                            if (obj.contains(s)){
                                obj = obj.replaceAll(s,"***");
                            }
                        }
                    }
                    return obj;
                }
                return method.invoke(req,args);
            }
        });
        //放行
        chain.doFilter(proxy,resp);
    }
    public void init(FilterConfig config) throws ServletException {
        //讀取文件
        ServletContext context = config.getServletContext();
        //src下的文件真實位置是在WEN-INF/classes下的
        String realPath = context.getRealPath("/WEB-INF/classes/bad.txt");
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(realPath));
            String line = null;
            while ((line = reader.readLine()) != null){
                list.add(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (reader != null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

servlet

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/servletDemo")
public class ServletDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String what = request.getParameter("what");
        System.out.println(name + " : " + what);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

到此這篇關于JavaWeb中的filter過濾敏感詞匯案例的文章就介紹到這了,更多相關JavaWeb filter過濾敏感詞匯內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringMVC中轉發(fā)與重定向的區(qū)別淺析

    SpringMVC中轉發(fā)與重定向的區(qū)別淺析

    這篇文章主要給大家介紹了關于SpringMVC中轉發(fā)與重定向的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Spring觀察者模式之事件發(fā)布訂閱實現(xiàn)和源碼詳解

    Spring觀察者模式之事件發(fā)布訂閱實現(xiàn)和源碼詳解

    這篇文章主要介紹了Spring觀察者模式之事件發(fā)布訂閱實現(xiàn)和源碼詳解,Spring認為發(fā)布訂閱主題,其實可以理解為事件驅動的編碼,先來實現(xiàn)以下Spring容器中的事件發(fā)布訂閱,需要的朋友可以參考下
    2024-01-01
  • 淺談IDEA實用的Servlet模板

    淺談IDEA實用的Servlet模板

    今天給大家分享一下IDEA實用的Servlet模板,文中有非常詳細的圖文介紹及代碼示例,對小伙伴們很有幫助哦,需要的朋友可以參考下
    2021-05-05
  • SpringBoot2.0.3打印默認數(shù)據源為 HikariDataSource (null)問題

    SpringBoot2.0.3打印默認數(shù)據源為 HikariDataSource (null)問題

    這篇文章主要介紹了SpringBoot2.0.3打印默認數(shù)據源為 HikariDataSource (null)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 如何用ObjectMapper將復雜Map轉換為實體類

    如何用ObjectMapper將復雜Map轉換為實體類

    這篇文章主要介紹了如何用ObjectMapper將復雜Map轉換為實體類的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringCloud Feign遠程調用實現(xiàn)詳解

    SpringCloud Feign遠程調用實現(xiàn)詳解

    Feign是Netflix公司開發(fā)的一個聲明式的REST調用客戶端; Ribbon負載均衡、 Hystrⅸ服務熔斷是我們Spring Cloud中進行微服務開發(fā)非?;A的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時出現(xiàn)的,而且配置也都非常相似
    2022-11-11
  • mybatis類型處理器JSR310標準詳解

    mybatis類型處理器JSR310標準詳解

    這篇文章主要介紹了mybatis類型處理器JSR310標準詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • jfreechart畫折線圖的方法

    jfreechart畫折線圖的方法

    這篇文章主要為大家詳細介紹了jfreechart畫折線圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Spring Mybatis Mapper模糊查詢的幾種方法

    Spring Mybatis Mapper模糊查詢的幾種方法

    在Spring結合Mybatis進行開發(fā)時,實現(xiàn)模糊查詢是一個常見需求,在Mybatis中,LIKE查詢可以通過多種方式實現(xiàn),本文給大家介紹了Spring Mybatis Mapper模糊查詢的幾種方法,需要的朋友可以參考下
    2024-03-03
  • Java基于接口實現(xiàn)模擬動物聲音代碼實例

    Java基于接口實現(xiàn)模擬動物聲音代碼實例

    這篇文章主要介紹了Java基于接口實現(xiàn)模擬動物聲音代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06

最新評論