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 VS2022 C++的相关代码问题咨询
- ¥15 如果要做一个老年人平板有哪些需求
- ¥15 k8s生产配置推荐配置及部署方案
- ¥15 matlab提取运动物体的坐标
- ¥15 人大金仓下载,有人知道怎么解决吗
- ¥15 一个小问题,本人刚入门,哪位可以help
- ¥30 python安卓开发
- ¥15 使用R语言GD包一直不出结果
- ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
- ¥15 如何根据一个截图编写对应的HTML代码