json主要通过@ResponseBody和@RequestBody两个注解来实现
@ResponseBody:该注解用于将Controller 的方法返回的对象,通过HttpMessageConverter转换为指定格式后,写入到Response对象的Body数据区。这时候我们就很方便的可以将数据写入到客户端。
@Request Body(请求题)
请求参数也可以以json的形式传到后台
该注解用于读取Request请求的body部分数据,使用系统默认的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上,再把HttpMessageConverter返回的对象数据绑定到controller中方法的参数上
要想使用json需要添加如下依赖坐标
<!-- 添加json 依赖jar包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.0</version>
</dependency>
修改servlet-context.xml
<!-- mvc 请求映射 处理器与适配器配置 -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConvert
er" />
</mvc:message-converters>
</mvc:annotation-driven>
通过@ResponseBode来是的返回的参数是json格式,@RequestBody这个来是的传入的参数是json格式,在设置传入参数是json格式的过程中,我们用到了 ajax,来设置传入参数的格式。
@Controller
public class UserLoginController {
@RequestMapping("user/queryUser01")
@ResponseBody
public User queryUser01(){
User user=new User();
user.setId(10);
user.setUserName("张三");
user.setUserPwd("123456");
return user;
}
@RequestMapping("user/queryUser02")
public @ResponseBody User queryUser02(){
User user=new User();
user.setId(20);
user.setUserName("李四");
user.setUserPwd("123456");
return user;
}
@RequestMapping("user/queryUser03")
@ResponseBody
public List<User> queryUser03(){
List<User>users=new ArrayList<>();
User user1=new User();
user1.setId(10);
user1.setUserName("张三");
user1.setUserPwd("123456");
User user=new User();
user.setId(20);
user.setUserName("李四");
user.setUserPwd("123456");
users.add(user1);
users.add(user);
return users;
}
/**
* 传入参数是json格式的,返回值也是json格式的
* @param user
* @return
*/
@RequestMapping("user/queryUser04")
@ResponseBody
public User queryUser04(@RequestBody User user){
return user;
}
}
jsp文件代码:
<%--
Created by IntelliJ IDEA.
User: zks
Date: 1/14/2022
Time: 8:36 PM
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
function test1(){
$.ajax({
type:"post",
url:"user/queryUser04.do",
dataType:"json",
contentType:"application/json;charset=utf-8",
data:'{"userName":"admin","userPwd":"123456"}',
success:function(data){
alert(data.userName+"--"+data.userPwd);
}
})
}
</script>
</head>
<body>
<input type="button" value="请求响应json" onclick="test1()"/>
</body>
</html>