• 过滤器 过滤关键字




    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import java.io.*;
    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 CheckWordFilter implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    //创建代理对象,增强getParameter方法
    ServletRequest req_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")){
    //增强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;
    }
    return method.invoke(req, args);
    }
    });
    chain.doFilter(req_proxy,resp);
    }
    private List<String> list=new ArrayList<String>();
    public void init(FilterConfig config) throws ServletException {
    try{
    //获取文件真实路径
    ServletContext servletContext = config.getServletContext();
    String realPath = servletContext.getRealPath("/WEB-INF/classes/checkword.txt");
    //读取文件
    InputStreamReader isr = new InputStreamReader(new FileInputStream(realPath), "UTF-8");
    BufferedReader br = new BufferedReader(isr);
    //定义读取的长度
    String line=null;
    while ((line=br.readLine())!=null){
    list.add(line.trim());
    }
    br.close();
    //System.out.println(list);
    for (String s : list) {
    System.out.println(s);
    }
    } catch (Exception e){
    e.printStackTrace();
    }

    }

    }
  • 相关阅读:
    IOS 修改UISearchBar 输入框的颜色 placeholder字体的颜色
    iOS-集成微信支付和支付宝支付
    iOS-集成极光推送
    常用iOS开发网站资源
    iOS -媒体播放器 AVPlayer 与 AVPlayerViewController
    使用终端统计代码行数
    swift 与 OC中的需要注意知识点
    去掉tableview顶部留白
    解决UIScrollView把uitableviewcell的点击事件屏蔽
    按钮点击发光效果
  • 原文地址:https://www.cnblogs.com/fpflog/p/12073702.html
Copyright © 2020-2023  润新知