有人可以在Spring 3中解释@RequestBody和@ResponseBody注释吗?他们是干什么的?任何例子都很好。
在文档中有一个名为16.3.3.4的完整章节,其中将请求主体与@RequestBody批注进行映射。还有一个叫做16.3.3.5的映射,它使用@ResponseBody注释映射响应主体。我建议你查阅这些部分。也相关:@RequestBodyjavadocs,@ResponseBodyjavadocs
使用示例如下所示:
使用像JQuery这样的JavaScript库,你可以像这样发布JSON对象:
{ "firstName" : "Elmer", "lastName" : "Fudd" }
你的控制器方法如下所示:
// controller @ResponseBody @RequestMapping("/description") public Description getDescription(@RequestBody UserStats stats){ return new Description(stats.getFirstName() + " " + stats.getLastname() + " hates wacky wabbits"); } // domain / value objects public class UserStats{ private String firstName; private String lastName; // + getters, setters } public class Description{ private String description; // + getters, setters, constructor }
现在,如果你在类路径中有Jackson(并进行了设置),Spring会将传入的JSON从帖子正文转换为UserStats对象(因为你添加了@RequestBody注释),并且会将返回的对象序列化为JSON(因为你添加了@ResponseBody注解)。因此,浏览器/客户端将看到以下JSON结果:
{ "description" : "Elmer Fudd hates wacky wabbits" }
有关完整的工作示例,请参见我的前一个答案:https : //stackoverflow.com/a/5908632/342852
注意:RequestBody / ResponseBody当然不限于JSON,两者都可以处理多种格式,包括纯文本和XML,但是JSON可能是最常用的格式。
更新资料 从Spring 4.x开始,通常不会@ResponseBody在方法级别使用,而是@RestController在类级别使用,具有相同的效果。
@ResponseBody
@RestController