zoukankan      html  css  js  c++  java
  • 字符编码过滤器

    在项目中会遇到这样的需求,通过form表单或则ajax提交数据的时候会出现中文乱码的情况,这个时候就需要在前端与后台设置好同样的编码格式,但是前后台这么多业务逻辑,如果这样做的话会很麻烦,于是就相应出现了字符编码过滤器,这里实现了如果前端声明了字节编码那么就不动,如果未做声明则配置其字符编码为utf-8格式,代码如下:

    package com.demo.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    /**
     * 字符编码过滤器
     * @author zhangdi
     *
     */
    public class CharacterEncodingFilter implements Filter{
    
        //字符编码
        private String encoding;
        
        @Override
        public void destroy() {
            System.out.println("被销毁");
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            System.out.println("完成过滤请求操作");
            request.setCharacterEncoding(encoding);
            chain.doFilter(request, response);
            System.out.println("完成过滤相应操作");
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            encoding = filterConfig.getInitParameter("encoding");
            if(encoding==null){
                encoding = "utf-8";
            }
        }
    
    }

    注意不要忘了在web.xml中配置声明:

        <!-- 字符编码过滤器 -->
         <filter>
             <filter-name>encoding</filter-name>
             <filter-class>com.demo.filter.CharacterEncodingFilter</filter-class>
             <init-param>
                 <param-name>encoding</param-name>
                 <param-value>UTF-8</param-value>
             </init-param>
         </filter>
         <filter-mapping>
             <filter-name>encoding</filter-name>
             <url-pattern>*.do</url-pattern>
         </filter-mapping>

    这里配置的过滤范围是所有以.do结尾的接口

  • 相关阅读:
    map方法,以及filter方法的使用
    detach与remove区别,以及detach保留被删除的元素数据,使用
    jQuery 文档操作
    javascript 清空数组的方法
    jquery遍历数组的方式
    Oracle表空间不足处理
    css 文本超出2行就隐藏并且显示省略号
    Vim中的寄存器
    spacemacs怎样配置编辑器显示行号?
    Docker考前突击
  • 原文地址:https://www.cnblogs.com/zhangdiIT/p/6772691.html
Copyright © 2011-2022 走看看