当前位置:   article > 正文

对于Spring中常用的RestController注解的学习笔记_代替requestmapping加responsebody

代替requestmapping加responsebody

本篇文章主要记载作者本人在学习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());
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/148980
推荐阅读
相关标签
  

闽ICP备14008679号