本篇文章讲述对JSON数据的处理,关于响应的处理可以看我第二篇文章
链接地址:https://segmentfault.com/a/11...
前期准备
使用环境
- JDK:1.8
- Tomcat:9.0.3
- Spring:5.2.8
- Maven:3.6.3
- 编译器:IntelliJ IDEA 2019
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:ApplicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
ApplicationContext.xml配置(Spring核心配置文件)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 开启spring注解驱动-->
<context:component-scan base-package="com.cjh"/>
<!-- 开启mvc注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
JSON数据的处理
浏览器通过ajax发送JSON数据
点击button,发送JSON数据
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>cai jin hong</title>
<script type="text/javascript">
window.onload = function () {
document.getElementById("button").onclick = function () {
//1、创建一个AJAX对象
var xhr = new XMLHttpRequest();
xhr.open("POST", "test.do", true);
//告知浏览器发送的是什么信息
xhr.setRequestHeader("Content-type", "application/json;charset=UTF-8");
//2、随时监听响应回来的数据
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200){
alert(xhr.responseText);
}
}
//3、发送JSON数据
xhr.send('{"account":"2020", "password": "123456", "balance":98}');
}
}
</script>
</head>
<body>
<button id="button">测试JSON数据</button>
</body>
</html>
服务器接收JSON数据
- 注意:需要引入jackson-core、jackson-databind和jackson-annotations包
- 使用@RequestBody注解,表明接收的参数是JSON格式的,如果发送的JSON对象的key名字刚好是实体对象的属性名字,那么只要我们的方法参数写的是实体对象类型,mvc会包装成我们要求的类型
- 代码如下:
@Controller
public class UserController {
//方法中传入实体对象:对象里面有list集合
@RequestMapping("test.do")
public void testFive(@RequestBody User user){
System.out.println(user);
}
}
服务器响应JSON数据
- 注意:需要引入jackson-core、jackson-databind和jackson-annotations包
响应实体对象:使用@ResponseBody注解,直接返回实体对象(mvc会把它转换成JSON格式的数据)
- 代码如下:
@Controller public class UserController { //方法中传入实体对象:对象里面有list集合 @RequestMapping("test.do") @ResponseBody public User testFive(User user){ System.out.println(user); return user; } }
- 不论是响应Map、list还是Set集合,都是一样的用法
- 如果是返回String,并且搭配@ResponseBody,那么是直接相应会给浏览器,而不是转发/重定向
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。