1. Controller
返回一个页面
单独使用 @Controller
而不加 @ResponseBody
的话,一般使用在要返回一个视图的情况,这种情况属于比较传统的 Spring MVC 应用,对应于前后端不分离的情况。
SpringMVC 传统工作流程
2. @RestController
返回 JSON 或 XML 形式数据
@RestController
只返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应中,这种情况属于 Resttful Web 服务,也是目前日常开发所接触的最常用的情况(前后端分离)。
SpringMVC+RestController
3. @Controller +@ResponseBody
返回JSON 或 XML 形式数据
在 Spring4 之前开发 RESTful Web 服务的话,需要使用 @Controller
并结合 @ResponseBody
注解,也就是说 @Controller
+ @ResponseBody
= @RestController
(Spring4 之后新加的注解)。
@ResponseBody
注解的作用,是将Controller
方法返回的对象,通过适当的转换器转换为指定的格式之后,写入到 HTTP 响应对象的 body 中,通常用来返回 JSON 或者 XML 数据,返回 JSON 数据的情况比较多。
Spring3.x MVC RESTful Web 服务工作流程