【SpringMVC】08 Post请求乱码

2021-01-27 19:13

阅读:655

标签:har   ini   mic   pattern   编码   中文   -name   pos   val   

这是以Post请求方式接受来的中文字符乱码

技术图片

就像之前JavaWeb阶段的情况一样

 

所以,按照JavaWeb的方法,我们应该只需要在获取之前设置好编码处理就行了

可以先从这个处理方法开始试试,但是参数在编码之前就已经获取了,所以这样是没有用的

技术图片

 

于是测试第二种方法,因为所有的请求都会被过滤器最先拦截下来,再放行给Servlet程序

这里本来想使用注解的,但是好像没有API支持吧,用不了就还是老办法XML配置

package cn.dai.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * @author ArkD42
 * @file SpringMVC
 * @create 2020 - 05 - 07 - 14:38
 */

public class EncodingFilter implements Filter {

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("UTF-8");
        // 一般来说返回数据不会出现什么乱码
        // servletResponse.setCharacterEncoding("UTF-8");

        // 不要忘记放行请求哦
        filterChain.doFilter(servletRequest, servletResponse);
    }

    public void destroy() {

    }
}

 

web.xml的配置


    filter>
        filter-name>EFfilter-name>
        filter-class>cn.dai.filter.EncodingFilterfilter-class>
    filter>

    filter-mapping>
        filter-name>EFfilter-name>
        
        url-pattern>/*url-pattern>
    filter-mapping>

 

访问测试成功,中文获取正常

技术图片

 

要注意的是过滤器的路径配置【也成为路由配置】不可以单写反斜杠

否则过滤的只是单个工程首页的过滤,应该写反斜杠 + 通配符星号

 

这个过滤器我们可以自己写,也可以交给SpringMVC的过滤器来完成

我们只需要配置web.xml即可

【这个过滤器也一样,路由要写成 / *,否则也会失效】

    filter>
        filter-name>SpringMVC EFfilter-name>
        filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        init-param>
            param-name>encodingparam-name>
            param-value>utf-8param-value>
        init-param>
    filter>

    filter-mapping>
        filter-name>SpringMVC EFfilter-name>
        url-pattern>/*url-pattern>
    filter-mapping>

 

【SpringMVC】08 Post请求乱码

标签:har   ini   mic   pattern   编码   中文   -name   pos   val   

原文地址:https://www.cnblogs.com/mindzone/p/12843061.html


评论


亲,登录后才可以留言!