持续创作,加速成长!这是我参与「掘金日新计划 · 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
没错,就是这个会飞的小人。
既然我们用到了就来简单介绍下Postman。
Postman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流。
测试Sring MVC 的POST请求
1.首先启动我们的工程
2.打开Postman测试工具
3.输入需要访问的url,并设置请求方式为POST请求
我们之前GET请求方式访问路径是http://localhost:8080/hello/index?id=1&name=xyj,直接使用路径传参的方式,POST请求不能使用这种方式了,我们的参数要写在body之中。
都设置好之后,我们点击Send按钮就可以进行请求了。
可以看到响应信息中有一个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>
这里过滤器写在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请求时参数获取的中文乱码问题的两种解决方式。如果觉得写的不错,请多多支持。