Spring中的@RequestBody和@ResponseBody批注

有人可以在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在类级别使用,具有相同的效果。

以上是 Spring中的@RequestBody和@ResponseBody批注 的全部内容, 来源链接: utcz.com/qa/418969.html

回到顶部