zoukankan      html  css  js  c++  java
  • 全局编码过滤器

    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
     
    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.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import javax.servlet.http.HttpServletResponse;
     
    public class EncodingFilter implements Filter {
         
        private static String encoding;
        private static final String DEFAULT_CHARSET="UTF-8";
        @Override
        public void destroy() {
            System.out.println("--------destroy---------");
        }
     
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            System.out.println("--------doFilter---------");
            HttpServletRequest httpRequest = (HttpServletRequest) request;  
            HttpServletResponse httpResponse=(HttpServletResponse)response;
            if("GET".equals(httpRequest.getMethod())){
                EncodingHttpServletRequest wrapper = new EncodingHttpServletRequest(httpRequest, encoding);   
                chain.doFilter(wrapper, response);  
            }else{
                httpRequest.setCharacterEncoding(encoding);
                httpResponse.setContentType("text/html;charset="+encoding);
                chain.doFilter(request, response);  
            }
        }
        private static class  EncodingHttpServletRequest extends HttpServletRequestWrapper{
             private HttpServletRequest request;
             public EncodingHttpServletRequest(HttpServletRequest request,String encoding) {
               super(request);
               this.request = request;
             }
             @Override
            public String getParameter(String name) {
                   String value = request.getParameter(name);
                   try {
                    value = new String(value.getBytes("iso8859-1"), encoding);
                   } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                   }
                   return super.getParameter(name);
            }
        }
        @Override
        public void init(FilterConfig config) throws ServletException {
             System.out.println("--------init---------");  
             encoding = config.getInitParameter("encoding");
             if(encoding==null||"".equals(encoding))
                 encoding=DEFAULT_CHARSET;
        }
     
    }
    <!-- 设置全局的编码格式,针对get,post请求,默认编码为UTF-8 -->
      <filter>
          <filter-name>characterFilter</filter-name>
          <filter-class>com.mscncn.jsd1404.EncodingFilter</filter-class>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>characterFilter</filter-name>
          <!-- 拦截所有的请求,为所有的请求设置编码 -->
          <url-pattern>/*</url-pattern>
      </filter-mapping>
  • 相关阅读:
    如何度过每天的最初十分钟
    微软正在拿命做一场豪赌
    .htaccess用法与设置超详细讲解+大全
    互联网+情趣用品:羞答答的玫瑰静悄悄地开
    男人雄辩 女人聊天
    苹果手表会一直美下去
    移动应用大行其道:你的企业准备好了吗?
    微商的下一步会怎么走?
    阿里京东腾讯58的O2O格局,创业者的夹缝生存之道
    苹果首席设计师艾维:Apple Watch不是奢侈品
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/5390677.html
Copyright © 2011-2022 走看看