1.SpringMVC对json格式数据的支持
- SpringMVC使用HttpMessageConverter处理json,使用HttpMessageConverter<T>将请求信息转化并绑定到处理方法的入参中或将相应结果转为对应的相应的响应信息,spring提供@RequestBody/@responseBody对处理方法进行标注。
- 当控制器处理方法使用到 @RequestBody/@ResponseBody ,Spring 首先根据请求头或响应头的 Accept 属性选择匹配的 HttpMessageConverter, 进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter, 若找不到可用的 HttpMessageConverter 将报错
- 请求和响应中的数据转换
- HttpMessageConverter<T> 的实现类
- @ResponseBody的作用其实是将java对象转为json格式的数据。
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
2.代码演示
1.请求json,返回json
加入json的处理jar
jar链接:https://pan.baidu.com/s/18-A0ZCABISQV00twtgkYkg
提取码:ojh0
(1)requestJson.jsp
-
<%@ page language="java" contentType="text/html; charset=UTF-8"
-
pageEncoding=
"UTF-8"%>
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
<title>Insert title here
</title>
-
<script type="text/javascript"
-
src=
"${pageContext.request.contextPath}/scripts/jquery-1.7.2.min.js">
</script>
-
<script type="text/javascript">
-
function requestJson() {
-
//模仿json格式的数据
-
var jsonUser =
JSON.stringify({
"username":
"张三",
"age":
"18",
"address":
"朔州"});
-
$.ajax({
-
type:
'post',
-
url:
'${pageContext.request.contextPath}/json/requestJson',
-
contentType:
'application/json;charset=utf-8',
-
data:jsonUser,
-
//回调函数,查看到底成不成功
-
success:
function(data){
-
alert(data);
-
}
-
})
-
}
-
-
}
-
</script>
-
</head>
-
<body>
-
<input type="button" value="请求json,返回json" onclick="requestJson()">
-
<input type="button" value="请求pojo,返回json" onclick="requestPojo()">
-
</body>
-
</html>
(2)controller
-
@RequestMapping("/json")
-
@Controller
-
public
class JsonController {
-
-
-
//接受json的数据 使用 RequsetBody把json格式数据封装到User对象
-
//返回User对象,使用ResponseBody把User对象转成json对象
-
@RequestMapping("/requestJson")
-
public
@ResponseBody User1 requestJson(
@RequestBody User1 user){
-
System.
out.println(user);
-
return user;
-
}
-
}
我们进行debug调试,浏览器进行访问,通过开者工具Sources查看json的请求和返回
说明json格式数据转换成功了,可以进行请求了
说明返回json数据成功了
2.请求Pojo,返回json
(1)requestJson.jsp
-
<%@ page language="java" contentType="text/html; charset=UTF-8"
-
pageEncoding=
"UTF-8"%>
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
<title>Insert title here
</title>
-
<script type="text/javascript"
-
src=
"${pageContext.request.contextPath}/scripts/jquery-1.7.2.min.js">
</script>
-
<script type="text/javascript">
-
function requestPojo() {
-
$.ajax({
-
type:
'post',
-
url:
'${pageContext.request.contextPath}/json/requestPojo',
-
//模仿javaBean
-
data:
'username=张&age=13&address=上海',
-
//回调函数,查看到底成不成功
-
success:
function(data){
-
alert(data);
-
}
-
})
-
}
-
</script>
-
</head>
-
<body>
-
<input type="button" value="请求json,返回json" onclick="requestJson()">
-
<input type="button" value="请求pojo,返回json" onclick="requestPojo()">
-
</body>
-
</html>
(2)contoller
-
package com.hbsi.springmvc.json;
-
-
import org.springframework.stereotype.Controller;
-
import org.springframework.web.bind.
annotation.RequestBody;
-
import org.springframework.web.bind.
annotation.RequestMapping;
-
import org.springframework.web.bind.
annotation.ResponseBody;
-
-
import com.hbsi.springmvc.bean.User1;
-
@RequestMapping("/json")
-
@Controller
-
public
class JsonController {
-
//请求POJO返回json
-
@RequestMapping("/requestPojo")
-
public
@ResponseBody User1 requestPojo(User1 user){
-
System.
out.println(user);
-
return user;
-
}
-
}
我们进行debug调试,浏览器进行访问,通过开者工具Sources查看json的请求和返回
说明请求pojo,返回pojo成功了
转载:https://blog.csdn.net/lbqlzch/article/details/106178631
查看评论