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
  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/vhyc/p/6512223.html
Copyright © 2011-2022 走看看