JSON数据开发

JSON数据开发

基本概念

Json 在企业开发中已经作为通用的接口参数类型,在页面(客户端)解析很方便。SpringMVC 对于json 提供了良好的支持,这里需要修改相关配置,添加 json 数据支持功能

@RequestBody

该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定到要返回的对象上 ,再把 HttpMessageConverter 返回的对象数据绑定到controller 中方法的参数上。

@ResponseBody

该注解用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写入到 Response 对象的 body 数据区。

返回的数据不是 html 标签的页面,而是其他某种格式的数据时(如 json、xml 等)使用(通常用于ajax 请求)。

相关配置

        <!-- 添加json 依赖jar包 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.10.0</version>
        </dependency>
    <!-- mvc 请求映射 处理器与适配器配置 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
        </mvc:message-converters>
    </mvc:annotation-driven>

注解使用

@ResponseBody

package com.xxxx.springmvc.controller;

import com.xxxx.springmvc.vo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

/**
 * JSON配置
 *      @ResponseBody
 *      返回的数据是JSON格式
 */
@Controller
public class JsonController {
    
    

    /**
     * @ResponseBody 返回的是JOSN格式的数据,返回JavaBean对象
     * 注解设置在方法体上
     * @return
     */
    @RequestMapping("query01")
    @ResponseBody
    public User query01(){
    
    
        User user = new User();
        user.setId(1);
        user.setUserName("admin");
        user.setUserPwd("123456");
        return user;
    }

    /**
     * @ResponseBody 返回的是JOSN格式的数据,返回JavaBean对象
     * 注解设置在方法的返回对象之前,修饰符之后
     * @return
     */
    @RequestMapping("query02")
    public @ResponseBody User query02(){
    
    
        User user = new User();
        user.setId(1);
        user.setUserName("admin");
        user.setUserPwd("123456");
        return user;
    }



    /**
     * @ResponseBody 返回的是JOSN格式的数据,返回的是JOSN格式的数据,返回集合
     * @return
     */
    @RequestMapping("query03")
    @ResponseBody
    public List<User> query03(){
    
    
        User user = new User();
        user.setId(1);
        user.setUserName("admin");
        user.setUserPwd("123456");

        User user2 = new User();
        user2.setId(2);
        user2.setUserName("zhangsan");
        user2.setUserPwd("456789");

        User user3 = new User();
        user3.setId(3);
        user3.setUserName("lisi");
        user3.setUserPwd("789789");

        List<User> userList = new ArrayList<>();
        userList.add(user);
        userList.add(user2);
        userList.add(user3);

        return userList;
    }


}

@RequestBody

@RequestBody 注解常用来处理 content-type 不是默认的 application/x-www-form-urlcoded 类型的内容,比如说:application/json 或者是application/xml 等。一般情况下来说常用其来处理application/json 类型。

@RequestBody接收的是一个 json 格式的字符串,一定是一个字符串。

通过 @RequestBody 可以将请求体中的 JSON 字符串绑定到相应的 bean 上,当然,也可以将其分别绑定到对应的字符串上。

    /**
     * 要求前台传递json格式的数据
     * @param user
     * @return
     */
    @RequestMapping("query04")
    @ResponseBody
    public User query04(@RequestBody User user) {
    
    
        System.out.println(user);
        return user;
    }
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSON处理</title>
    <%-- 引入Jquery的核心JS文件 --%>
    <script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
</head>
<body>
<input type="button" value="JSON数据测试" onclick="test()"/>
<script type="text/javascript">
    /*** 请求传递JSON格式的数据 * 返回JSON格式的数据 */
    function test(){
    
    
        $.ajax({
    
    
            //请求方式 Get|Post
            type: "post",
            // 请求路径
            url: "query04",
            // 预期服务器返回的数据类型
            dataType: "json",
            // 设置服务器请求类型的数据类型为JSON格式
            contentType: "application/json;charset=utf-8",
            // 传递给服务器的参数
            data:'{"userName":"admin","userPwd":"123456"}',
            // 回调函数,接收服务器返回的响应的结果 (函数中的形参用来接收服务器返回的数据)
            success:function(data){
    
    
                console.log(data);
            }
        });
    }
</script>
</body>
</html>

Guess you like

Origin blog.csdn.net/lln1540295459/article/details/121209356