文本过滤-替换--JAVA

package main.proxy.word;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
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("/wordtest")
public class wordFilter implements Filter {
    List<String> list = new ArrayList<String>();
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {


        ServletRequest proxy1 = (ServletRequest) Proxy.newProxyInstance(req.getClass().getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

                if (method.getName().equals("getParameter")) {

                    String res = (String) method.invoke(req, args);

                    for (String i : list) {

                        if (res.contains(i)) {

                            String rep = "";
                            for (int j = 0; j < i.length(); j++) {
                                rep += "*";
                            }
                            res=res.replaceAll(i, rep);
                        }
                    }
                    return res;
                }
                return method.invoke(req, args);
            }
        });
        chain.doFilter(proxy1, resp);
    }

    public void init(FilterConfig config) throws ServletException {
        //获取配置文件中的敏感词文件虚拟路径名称
        String xxx = config.getServletContext().getInitParameter("xxx.txt");
        //获取真实路径名称
        String url = config.getServletContext().getRealPath(xxx);
        try {
            BufferedReader file = new BufferedReader(new InputStreamReader(new FileInputStream(url),"utf-8"));

            String s=null;
            while((s=file.readLine())!=null){

                list.add(s);
            }
            System.out.println(list);
            file.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

全部评论

相关推荐

头像
04-29 10:53
已编辑
东北大学 自动化类
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务