• filter敏感词替换


    1.properties文件的应用

    在<filter>写入配置

        <filter>
            <filter-name>myFilter</filter-name>
            <filter-class>filter.MyFilter</filter-class>
            <init-param>
                <param-name>file</param-name>
                <param-value>/WEB-INF/sensitive.properties</param-value>
            </init-param>
        </filter>

    在filter中提出

    private Properties pp = new Properties();
            String file = filterConfig.getInitParameter("file");
            String realPath = filterConfig.getServletContext().getRealPath(file);// 获取真实路径
            try {
    
                pp.load(new FileInputStream(realPath));
    for (Object j : pp.keySet()) {
                String key = (String) j;
                // String newKey = new String((oldKey.getBytes("ISO8859-1")),
                // "UTF8");
                output = output.replace(key, pp.getProperty(key));

    2.HttpCharacterResponseWrapper extends HttpServletResponseWrapper 

    通过继承HttpServletResponseWrapper

    在里面定义一个private CharArrayWriter charArrayWriter = new CharArrayWriter();来缓冲数据

    重写getWriter()

    写个一个getCharArrayWriter()来获得缓冲内容

    HttpCharacterResponseWrapper

    package filter;
    
    import java.io.CharArrayWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletResponseWrapper;
    
    public class HttpCharacterResponseWrapper extends HttpServletResponseWrapper {
        private CharArrayWriter charArrayWriter = new CharArrayWriter();
    
        public HttpCharacterResponseWrapper(HttpServletResponse response) {
            super(response);
            // TODO Auto-generated constructor stub
        }
    
        public PrintWriter getWriter() throws IOException {
            return new PrintWriter(charArrayWriter);
        }
    
        public CharArrayWriter getCharArrayWriter() {
            return charArrayWriter;
        }
    }
    View Code

    Filter

    package filter;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Properties;
    
    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.HttpServletResponse;
    
    public class MyFilter implements Filter {
    
        private Properties pp = new Properties();
    
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            // TODO Auto-generated method stub
            HttpServletResponse HttpResponse = (HttpServletResponse) response;
            HttpCharacterResponseWrapper MyResponse = new HttpCharacterResponseWrapper(
                    HttpResponse);
            chain.doFilter(request, MyResponse);
            String output = MyResponse.getCharArrayWriter().toString();
            for (Object j : pp.keySet()) {
                String key = (String) j;
                // String newKey = new String((oldKey.getBytes("ISO8859-1")),
                // "UTF8");
                output = output.replace(key, pp.getProperty(key));
                // output = output.replaceAll(newKey, pp.getProperty(oldKey));
            }
            // System.out.println(output);
            PrintWriter out = response.getWriter();
            out.write(output);
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
            String file = filterConfig.getInitParameter("file");
            String realPath = filterConfig.getServletContext().getRealPath(file);// 获取真实路径
            try {
    
                pp.load(new FileInputStream(realPath));
    
                /*
                 * BufferedReader br = null; br = new BufferedReader(new
                 * InputStreamReader(new FileInputStream( new File(realPath)),
                 * "utf-8")); pp.load(br);
                 */
            } catch (IOException e) {
            }
        }
    
    }
    View Code
  • 相关阅读:
    ID:未找到命令-BASH:TTY:未找到命令
    连接/登录/访问 FTP超时、时间长,一条配置解决
    PlantUML integration plugin IDEA
    使用sc.exe delete 服务名 删除Windows下的【安装错误的、不能使用的】服务
    Eclipse JDT Icons(Java Development Tools 图标)
    Seata分布式事务——no available server to connect解决
    Slf4j Logger logger.info的使用
    SonarQube网页端登录失败的解决
    SpringBoot属性加载顺序
    W3School-SQL测验记录
  • 原文地址:https://www.cnblogs.com/vhyc/p/6512223.html
Copyright © 2020-2023  润新知