0715-SpringMVC配置了过滤器返回的数据还是会乱码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_30531261/article/details/81079368

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对象来返回数据的,只不过框架封装了这些操作而已。
所以,不能仅仅满足于会用框架啊。。。

猜你喜欢

转载自blog.csdn.net/weixin_30531261/article/details/81079368