Java過濾器實現簡單的敏感詞屏蔽


以jsp作為顯示,過程很簡單就是攔截jsp的頁面提交過來的一串內容,對其中的敏感詞進行屏蔽替換,最后在轉發到jsp頁面顯示。

這里采用一種簡單易理解的方法,新建一個servlet類繼承HttpServletRequestWrapper,然后重寫getParameter方法。

package zdc.servletTest;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class MyServlet extends HttpServletRequestWrapper {
   
    public MyServlet(HttpServletRequest request) {
        super(request);      
    }

    @Override
    public String getParameter(String name) {
        List<String> dirty = new ArrayList<String>();
        dirty.add("cnm");
        String content = super.getParameter(name);
        for(String s:dirty) {
            if(content.contains("cnm")) {
                content = content.replaceAll(s, "***");
            }
        }
        return content;
    }   
    
}
MyServlet

然后在DataFilter類中實現過濾功能

package zdc.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import zdc.servletTest.MyServlet;

public class DataFilter implements Filter {    

    public DataFilter() {

    }

    public void destroy() {

    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        
        
        MyServlet req = new MyServlet((HttpServletRequest)request);//在過濾器中用裝飾模式把 原裝request的功能增強了
        
        chain.doFilter(req, response);//前往不要忘記放行
    }

    public void init(FilterConfig fConfig) throws ServletException {
        
    }

}
DataFilter

在DataServlet中做轉發處理

package zdc.servletTest;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class DataServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
           
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String content = request.getParameter("content");
        request.setAttribute("content", content);
        request.getRequestDispatcher("/test.jsp").forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
DataServlet

至於顯示頁面test.jsp及其簡陋,自行想象。最后功能就是如果輸入你好,cnm。會屏蔽為你好,***。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM