zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    一本名副其实的 Web架构“圣经”——关于《HTTP权威指南》
    图灵生日会——纪念阿兰图灵诞辰100周年及图灵公司七周年线下交流会
    跟着图灵听课去!(六月)
    “电梯演讲”最精炼、贴切的语言
    送你一把开启演讲之路的钥匙——《演讲的艺术》
    翻译是一份严谨的工作——关于HTTP中文翻译的讨论
    浪潮之巅作者吴军推荐序——《推荐系统实践》
    如何到达永生?揭示科学之美
    软件行业大牛告诉你何谓成功?
    C#线程系列讲座(3):线程池和文件下载服务器
  • 原文地址:https://www.cnblogs.com/vhyc/p/6512223.html
Copyright © 2011-2022 走看看