post请求中文乱码
使用springmvc,web.xml
文件中也加了过滤器:
<!--filter编码过滤器-->
<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>
可是,返回的数据还是乱码。
代码:return "中文params not enough:" + input;
使用postman返回的结果:??params not enough:QueryReturnGoodsStatusInput{queryType='0', orderId='null'}
。
乱码了,这是为什么????????????????????
解决方法
最后解决方法
使用response对象返回数据,设置response的编码:
@RequestMapping(value = "/query",method = RequestMethod.POST)
@ResponseBody
public void queryReturnGoods(QueryReturnGoodsStatusInput input, HttpServletResponse response) throws Exception{
response.setContentType("text/html; charset=UTF-8");
response.getWriter().write(service.queryReturnGoodsStatus(input));
}
这样,返回数据就正常了:
{"status":"01","data":"接口异常"}
至于SpringMVC配置了编码过滤器依然乱码的问题,先放着。先把项目的后续问题给解决先。
总之,现在通过操作response对象可以解决问题。其实使用SpringMVC直接返回字符串,实际上也是通过response对象来返回数据的,只不过框架封装了这些操作而已。
所以,不能仅仅满足于会用框架啊。。。