zoukankan      html  css  js  c++  java
  • 过滤器复用代码【中文乱码、HTML转义】

    中文乱码

    
    public class CharacterEncodingFilter implements Filter {
    
    
        public void doFilter(ServletRequest req, ServletResponse resp,
                FilterChain chain) throws IOException, ServletException {
    
    
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) resp;
    
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
    
            chain.doFilter(new MyRequest(request), response);
    
    
        }
    
        public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
    
        }
    
        public void destroy() {
            // TODO Auto-generated method stub
    
        }
    }
    
    class MyRequest extends HttpServletRequestWrapper{
        private HttpServletRequest request;
        public MyRequest(HttpServletRequest request) {
            super(request);
            this.request = request;
    
        }
        @Override
        public String getParameter(String name) {
    
            String value = this.request.getParameter(name);
            if(value==null){
                return null;
            }
            if(!this.request.getMethod().equalsIgnoreCase("get")){
                return value;
            }
            try {
                value = new String(value.getBytes("iso8859-1"),"UTF-8");
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
            return value;
        }
    }

    过滤HTML

    public class HtmlFilter implements Filter {
    
    
        public void doFilter(ServletRequest req, ServletResponse resp,
                FilterChain chain) throws IOException, ServletException {
    
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) resp;
    
            chain.doFilter(new MyRequest2(request), response);
    
        }
    
        public void destroy() {
            // TODO Auto-generated method stub
        }
    
        public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
        }
    
    }
    class MyRequest2 extends HttpServletRequestWrapper{
    
        private HttpServletRequest request;
        public MyRequest2(HttpServletRequest request) {
            super(request);
            this.request = request;
        }
        @Override
        public String getParameter(String name) {
    
            String value = this.request.getParameter(name);
            if(value==null){
                return null;
            }
            return filter(value);
        }
    
        public String filter(String message) {
    
            if (message == null)
                return (null);
    
            char content[] = new char[message.length()];
            message.getChars(0, message.length(), content, 0);
            StringBuffer result = new StringBuffer(content.length + 50);
            for (int i = 0; i < content.length; i++) {
                switch (content[i]) {
                case '<':
                    result.append("&lt;");
                    break;
                case '>':
                    result.append("&gt;");
                    break;
                case '&':
                    result.append("&amp;");
                    break;
                case '"':
                    result.append("&quot;");
                    break;
                default:
                    result.append(content[i]);
                }
            }
            return (result.toString());
    
        }
    
    
    }
    如果您觉得这篇文章帮助到了您,可以给作者一点鼓励



  • 相关阅读:
    MT【38】与砝码有关的两个题
    MT【37】二次函数与整系数有关的题
    MT【36】反函数有关的一道题
    MT【35】用复数得到的两组恒等式
    MT【34】正余弦的正整数幂次快速表示成正余弦的线性组合
    MT【33】证明琴生不等式
    MT【32】内外圆(Apollonius Circle)的几何证明
    MT【31】傅里叶级数为背景的三角求和
    MT【30】椭圆的第二定义解题
    MT【29】介绍向量的外积及应用举例
  • 原文地址:https://www.cnblogs.com/zhong-fucheng/p/7203011.html
Copyright © 2011-2022 走看看