Spring MVC POST请求参数获取时中文乱码问题两种解决方式

481 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

前言

上一篇文章我们介绍了Spring MVC的常用注解,也学会了GET请求方式的参数获取,这篇pring MVAC的POST请求方式,以及POST请求参数获取时中文乱码问题的解决方法。

POST请求方式获取参数时中文乱码解决

@Controller
@RequestMapping("/hello")
public class HelloWorldHandler {

    @RequestMapping(value = "/index",method = RequestMethod.POST,params = {"id","name"})
    public String index( int id,  String name){
        System.out.println(id);
        System.out.println(name);
        System.out.println("执行了index...");
        return "index";
    }
}

之前是GET请求方式,我们在浏览器中输入http://localhost:8080/hello/index?id=1&name=xyj路径即可访问,浏览器输入url的访问方式时GET请求,那我们的POST该怎么来测试呢?这时候我们就需要用到我们经常要使用的Postman测试工具了。

Postman

微信截图_20221011231624.png

没错,就是这个会飞的小人。

既然我们用到了就来简单介绍下Postman。

微信截图_20221012001001.png

Postman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流。

测试Sring MVC 的POST请求

1.首先启动我们的工程

微信截图_20221012001813.png

2.打开Postman测试工具

微信截图_20221012001921.png

3.输入需要访问的url,并设置请求方式为POST请求

我们之前GET请求方式访问路径是http://localhost:8080/hello/index?id=1&name=xyj,直接使用路径传参的方式,POST请求不能使用这种方式了,我们的参数要写在body之中。

微信截图_20221012002344.png 都设置好之后,我们点击Send按钮就可以进行请求了。

微信截图_20221012004257.png

可以看到响应信息中有一个index,说明我们的请求成功了,我们再回控制台去查看下打印的参数。

获取的参数:

1
??????

可以看到我们获取的参数中,中文的name出现了乱码的情况。怎么去解决这种问题呢?这时候我们就需要用到过滤器来处理。

web.xml配置过滤器解决中文乱码问题

<filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

微信截图_20221012102517.png

微信截图_20221012102529.png 这里过滤器写在web.xml文件的上面,写在下面会报错,至于原因我也不太清楚懂的小伙伴可以告诉下。

然后我们运行项目,再去Postman中发送POST请求,查看获取参数的结果:

1
张三

在web.xml中配置完过滤器之后就不会出现中文乱码的问题了。

在配置类中配置过滤器

@Override
protected Filter[] getServletFilters() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("UTF-8");
    return new Filter[]{filter};
}

我们重新运行项目,再去Postman中发送POST请求,查看获取参数的结果:

1
张三

同样的,使用这种方式配置过滤器也能解决中文乱码的问题。

总结

这就是我们Spring MVC的POST请求时参数获取的中文乱码问题的两种解决方式。如果觉得写的不错,请多多支持。