Spring boot 注解@ResponseBody的使用(在thymeleaf中为例)

测试所用html:在这里插入图片描述

起初是注意到教程中,在简单返回一个字符串的页面上使用@restcontroller,而在thymeleaf的页面中用@controller

于是去看它的源码:在这里插入图片描述
发现就是相当于多了一个@responseBody

而@responseBody有博客说过了:“@ResponseBody作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML。”
经过一些尝试之后,我认为它的作用可以初步的理解为一个toString方法:
如果我们使用了此注解
在这里插入图片描述
那么结果就是返回值转化成一个文本写入body的结果,在这里就是在这里插入图片描述
如果返回的是一个自定义的对象:

@RequestMapping("/login")
  @ResponseBody
  public User login(User user){
    return user;
  }
  /**
  user的内容:userName,pwd
  */

那么结果就会是’{“userName”:“xxx”,“pwd”:“xxx”}'这样一个json格式
它等价于

  @RequestMapping("/login")
  public void login(User user, HttpServletResponse response){
    response.getWriter.write(JSONObject.fromObject(user).toString());
  }

于是我们可以定性的理解为,这个注解就是将返回值通过适当的转化变成了一串字面值

在上面list的例子中,如果不加@responseBody,就会得到这样的结果:在这里插入图片描述
在这里插入图片描述

这就意味着返回的字符串“list”指向了list.html,且thymeleaf的元素没有起作用——即静态访问了这个html

而在返回一个ModelAndView对象时,加不加此注解展示的效果似乎是一样的,个人理解是此对象中在返回之前就加载完了需要的数据,而经过注解之后的结果与直接传递恰好相同,不能认为它没有影响,否则就会在上文那样需要传递html时出错

参考:

https://blog.csdn.net/qq_43648927/article/details/105235801

……乐了,放了一个看的简书的参考链接,然后被提示外链过多 真行,一点都不让给别人引流是吧

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值