对于Spring中常用的RestController注解的学习笔记

本篇文章主要记载作者本人在学习Spring4.x时所遇到的一些问题,仅供学习参考。
之前在使用Spring时,在controller层的编写过程中遇到过将ResponseBody遗忘的情形,这导致了运行时的404错误,经过baidu,才知道是因为controller层要配合model模版进行响应,当controller层不使用ResponseBody注解时,返回结果无法直接写入HTTP response body中,controller层所做的结果被解析为跳转路径,由于路径不存在,自然会出现404错误。而使用了ResponseBody注解后,返回结果会自动写入HTTP response body中,从而完成页面的结果的显示。
所以在之前使用时RequestMapping与ResponseBody是一起使用的,今天在学习SpringBoot时发现了一个RestControlle注解,之前未曾接触过,应该是自己孤陋寡闻了,看到书上说RestControlle注解可以代替RequestMapping与ResponseBody,具体的示例如下:

   使用了Controlle注解的结果如下:
   @RequestMapping("/login")
  @ResponseBody
  public User login(User user){
    return user;
  }
  那么在前台接收到的数据为:'{"userName":"xxx","password":"xxx"}'
 
  使用了RestController注解的结果如下:
  @RequestMapping("/login")
  public void login(User user, HttpServletResponse response){
    response.getWriter.write(JSONObject.fromObject(user).toString());
  }

所以只要你的项目支持Spring4.x,并且需要哪个方法返回json数据格式,就可以将项目中的Controller换成RestController并把每个处理器方法上的ResponseBody注解去掉,两种注解方式的区别在于:

@ResponseBody,一般是使用在单独的方法上的,需要哪个方法返回json数据格式,就在哪个方法上使用,具有针对性。

@RestController,一般是使用在类上的,它表示的意思其实就是结合了@Controller和@ResponseBody两个注解,如果哪个类下的所有方法需要返回json数据格式的,就在哪个类上使用该注解,具有统一性;需要注意的是,使用了@RestController注解之后,其本质相当于在该类的所有方法上都统一使用了@ResponseBody注解,所以该类下的所有方法都会返回json数据格式,输出在页面上,而不会再返回视图。

至于各自有什么好处,因为还没探索到,所以还不了解,如果有了解的大佬希望不吝赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值