kim.zhang

风在前,无惧!


  • 首页

  • 标签42

  • 分类12

  • 归档94

  • 搜索

ResponseBody.md

发表于 2020-08-10 更新于 2021-11-21 分类于 SpringBoot
本文字数: 1.2k 阅读时长 ≈ 1 分钟

假如说后端想返回一个string类型字符串”你好,SpringBoot”给前端。那么,有以下两种方案:

通过HttpServletResponse对象

1
2
3
4
@GetMapping(value = "test")
public void test(HttpServletResponse response) throws IOException {
response.getWriter().write("你好 ,SpringBoot!");
}

我们通过postman来看一下前端接收到的结果和Header中的值。

img img

当我们用HttpServletResponse返回数据的时候,应该手动设置content-type,编码等。

1
2
3
4
5
6
@GetMapping(value = "test")
public void test(HttpServletResponse response) throws IOException {
response.setHeader("content-type","text/plains");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("你好 ,SpringBoot!");
}

当然也可以通过一行代码完成设置:

1
response.setHeader("content-type","text/plains;charset=UTF-8");

这样设置后,返回的结果编码和content-type都正常了。

img

通过@ResponseBody注解

1
2
3
4
5
@GetMapping(value = "test")
@ResponseBody
public String test() {
return "你好,SpringBoot";
}

从结果来看,@responseBody会自动帮我们设置content-type和编码:

img

以上返回的是字符串,那如果返回的是一个Object呢?

1
2
3
4
5
6
7
8
@GetMapping(value = "test")
@ResponseBody
public Map<String,Object> test() {
Map<String,Object> map = new HashMap<>();
map.put("id","1");
map.put("name","王小喵");
return map;
}

我们来看一下返回结果会是什么? 可以看到,@ResponseBody注解自动添加了content-type,还将对象自动转换成了json格式

img img

总结:

使用@ResponseBody来代替HttpServletResponse。HttpServletResponse需要自己设置编码等很多属性,而@ResponseBody会自动帮我们回写content-type、编码等值

一毛也是爱~
Kim.Zhang 微信支付

微信支付

# 注解
加载第三方组件.md
SpringBoot热部署.md
Kim.Zhang

Kim.Zhang

且行且珍惜
94 日志
12 分类
42 标签
E-Mail Weibo
粵ICP备19091267号 © 2019 – 2022 Kim.Zhang | 629k | 9:32
本站总访问量 4 次 | 有 309 人看我的博客啦 |
博客全站共176.7k字
载入天数...载入时分秒...
0%