@ResponseBody

作用:@ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。

@RequestBody

作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json数据)转换为java对象并绑定到Controller方法的参数上。

什么是HttpMessageConverter

作用:负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息。

代码测试:

(1)搭建SpringMVC的web开发环境(可以参照我上一篇博客纯注解搭建springmvc环境)注意:要使用这两个注解,就一定要有jackson的相关jar包

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.9.8</version>

</dependency>

1

2

3

4

5

6

导入了jar包之后,如果配置了<mvc:annotation-driven />或者使用了注解@EnableWebMvc,那么容器在启动的时候就会自动装载json的HttpMessageConverter如下图所示:

<%--

Created by IntelliJ IDEA.

User: Administrator

Date: 2019/6/14

Time: 18:48

To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<script type="text/javascript" src="/js/jquery-1.5.1.min.js"></script>

<title>Title</title>

<script>

$(function () {

$("button[name='butt1']").click(function () {

$.ajax({

url: "/save",

data:JSON.stringify({"userName":"张三","age":"18"}),

type: "POST",

success: function (data) {

alert(data);

},

contentType: "application/json;charset=utf-8"

});

});

})

</script>

</head>

<body>

<button name="butt1">提价post</button>

</body>

</html>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

点击提交,发送post请求,提价json字符串数据,需要指定contentType: "application/json;charset=utf-8"不然会报415错误

这里说明一下json字符串和json对象时两个不同的概念:

var user ={“userName”:“张三”,“age”:“18”} 这里user 是一个json对象,类型是object 可以通过user.name和user.age取到对应的值

var user1= ‘{“userName”:“张三”,“age”:“18”}’ 这里user1 就是一个字符串,是符合{k:v,k:v}这种json格式的字符串而已,不能通过上面那种方式取值。

可以通过一定的方法相互转换:json对象转json字符串 1、可以直接单引号 2、通过JSON.stringify(xxx)

json字符串转json对象:JSON.parse(xxxx)

controller层代码

@PostMapping("/save")

@ResponseBody

public User save(@RequestBody User user){

//将前台传过来的数据 以json的格式相应回浏览器

return user ;

}

}

1

2

3

4

5

6

7

开始测试:

————————————————

版权声明:本文为博主「莫失莫忘hh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。