Spring MVC POST中文乱码解决方案

来源:互联网 发布:mysql存储表情是问号 编辑:程序博客网 时间:2024/05/04 07:44

以前,我都是自己编写一个filter,来实现编码,代码如下:

public class CharacterEncodingFilter implements Filter {    private final static Logger log= LoggerFactory.getLogger(CharacterEncodingFilter.class);    private String characterEncoding; //编码方式配置在web.xml文件中    private boolean enabled;   //是否启用此Filter,配置在web.xml中    @Override    public void destroy() {        characterEncoding = null;    }    @Override    public void doFilter(ServletRequest request, ServletResponse response,                         FilterChain chain) throws IOException, ServletException {        if (enabled || characterEncoding != null) {            request.setCharacterEncoding(characterEncoding);            response.setCharacterEncoding(characterEncoding);        }        chain.doFilter(request, response);    }    @Override    public void init(FilterConfig config) throws ServletException {        characterEncoding = config.getInitParameter("characterEncoding");        enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim());    }}

然后自己在web.xml文件中做如下配置

<filter>        <filter-name>characterEncodingFilter</filter-name>        <filter-class>training.model.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>characterEncoding</param-name>            <param-value>UTF-8</param-value>        </init-param>        <init-param>            <param-name>enabled</param-name>            <param-value>true</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>characterEncodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

其实我们可以不必这么麻烦,重复造轮子。

spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下:

<filter>      <filter-name>CharacterEncodingFilter</filter-name>      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>      <init-param>          <param-name>encoding</param-name>          <param-value>utf-8</param-value>      </init-param>  </filter>  <filter-mapping>      <filter-name>CharacterEncodingFilter</filter-name>      <url-pattern>/*</url-pattern>  </filter-mapping>



0 0
原创粉丝点击