本篇文章讲述对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会包装成咱们要求的类型
  • 代码如下:
@Controllerpublic 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格局的数据)

    • 代码如下:
    @Controllerpublic class UserController {    //办法中传入实体对象:对象外面有list汇合    @RequestMapping("test.do")    @ResponseBody    public User testFive(User user){        System.out.println(user);        return user;    }}
  • 不论是响应Map、list还是Set汇合,都是一样的用法
  • 如果是返回String,并且搭配@ResponseBody,那么是间接相应会给浏览器,而不是转发/重定向