ssm resqonsebody放在一个返回值是string的控制器方法 为什么不会走字符过滤器啊
2条回答 默认 最新
- IT论之程序员 2023-06-06 20:25关注
@ResponseBody注解的作用是将方法的返回值转换为JSON或XML,并写入HTTP response body中,因此不会经过视图解析器。
在SSM框架中,默认配置了CharacterEncodingFilter字符编码过滤器,用于设置请求和响应的编码格式。但是,当使用@ResponseBody注解返回JSON或XML数据时,是不会经过字符编码过滤器的,因为响应的内容类型已经变成application/json或application/xml,不再是text/html。
所以,对于@ResponseBody注解的方法,要手动设置响应的编码格式,常见的方式有两种:- 在方法上添加@RequestMapping注解,通过produces属性设置响应的Content-Type和编码,例如:
java
@RequestMapping(produces = "text/html;charset=UTF-8")
@ResponseBody
public String test() {
...
} - 调用HttpServletResponse的setContentType和setCharacterEncoding方法,例如:
java
@RequestMapping
@ResponseBody
public String test(HttpServletResponse response) {
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
...
}
所以,对@ResponseBody注解的方法,要确保手动设置了响应的编码格式,否则响应的内容会以ISO-8859-1编码输出,可能导致中文乱码。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 - 在方法上添加@RequestMapping注解,通过produces属性设置响应的Content-Type和编码,例如:
悬赏问题
- ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
- ¥15 django5安装失败
- ¥60 ios系统storm sniffer 写入http规则加密如何破解?
- ¥15 Java与Hbase相关问题
- ¥15 后缀 crn 游戏文件提取资源
- ¥15 ANSYS分析简单钎焊问题
- ¥20 bash代码推送不上去 git fetch origin master #失败了
- ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
- ¥15 在centos7安装conda
- ¥15 c#调用yolo3 dll文件获取的数据对不上