• Spring MVC基于注解的使用:JSON数据处理


    在这里插入图片描述

    目录

    1.JSON数据交互

    1.1 JSON概述

    JSON 是一种轻量级的数据交换格式,是一种理想的数据交互语言,它易于阅读和编写,同时也易于机器解析和生成。
    JSON有两种数据结构:

    • 对象结构
    • 数组结构

    1.1.1 对象结构

    对象结构是由花括号括起来的逗号分割的键值对(key:value)构成。

    对象结构的语法格式是:
    { "key1 ":"value 1", "key2 ":"value 2", "key3 ":"value 3"}

    注意:

    • key 必须是字符串,value 可以是字符串, 数字, 对象, 数组, 布尔值或 null。
    • key 和 value 中使用冒号(:)分割。
    • 每个 key/value 对使用逗号(,)分割。

    1.1.2 数组结构

    数组结构是由中括号包裹逗号分隔的值的列表组成。

    数组结构的语法格式是:
    [ "value1","value2","value3" ]

    注意:JSON 中数组值必须是字符串, 数字, 对象, 数组, 布尔值或 null。

    java转换为json 的过程一般会称为 “序列化”
    json转换为java 的过程一般会称为 “反序列化”
    json的属和字符串值必须要用双引号 “” 不能用单引

    1.2 JSON数据转换

    为实现浏览器与控制器类之间的数据交互,Spring提供了一个HttpMessageConverter接口来实现该工作。Spring为HttpMessageConverter接口提供了很多实现类,来对不同类型的数据进行信息转换。而Spring MVC 默认处理JSON格式请求响应的实现类是MappingJackson2HttpMessageConverter,使用此类对数据进行转换。

    数据转换操作步骤:

    1. 导入jackson依赖

      com.fasterxml.jackson.core jackson-databind 2.13.2.2
    2. 在SpringMVC的核心配置文件中开启mvc的注解驱动,此时在HandlerAdaptor中会自动装配一个消息转换器:MappingJackson2HttpMessageConverter,可以将响应到浏览器的Java对象转换为Json格式的字符串

      mvc:annotation-driven/
      mvc:default-servlet-handler/

    3. 创建一个User类,用于封装User类型的请求参数

      public class User {
      private Integer id;
      private String username;
      private String password;

      public User() {
      }
      
      public User(Integer id, String username, String password) {
          this.id = id;
          this.username = username;
          this.password = password;
      }
      
      public Integer getId() {
          return id;
      }
      
      public void setId(Integer id) {
          this.id = id;
      }
      
      public String getUsername() {
          return username;
      }
      
      public void setUsername(String username) {
          this.username = username;
      }
      
      public String getPassword() {
          return password;
      }
      
      public void setPassword(String password) {
          this.password = password;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32

      }

    4. 在控制器方法上使用@ResponseBody注解进行标识

      @RequestMapping(“/testJson”)
      @ResponseBody
      public User testJson(){
      return new User(001,“jack”,“123456”);
      }

    5. 将Java对象直接作为控制器方法的返回值返回,就会自动转换为json格式的字符串
      在这里插入图片描述

    2. HttpMessageConverter

    HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文。
    HttpMessageConverter提供了两个注解@RequestBody和@ResponseBody,在JSON格式转换中也是非常重要的。

    2.1 @RequestBody

    @RequestBody 可以获取请求体,需要在控制器方法设置一个形参,使用@RequestBody进行标识,就会将请求体中的数据绑定到方法的形参中。

     @RequestMapping("/testRequestBody")
        public String testRequestBody(@RequestBody String requestBody){
            System.out.println("requestBody:" + requestBody);
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    表单提交:

    用户名:
    密码:

    • 1
    • 2
    • 3
    • 4
    • 5

    返回结果:requestBody:username=abc&password=123

    2.2 @ResponseBody

    @ResponseBody 标识当前的控制器方法,直接将该方法的返回值作为响应报文的响应体响应到浏览器

    @RequestMapping("/testResponseBody")
        @ResponseBody
        public String testResponseBody(){
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    通过超链接测试:
    测试testResponseBody

    在这里插入图片描述

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    4.3 - 队列与栈
    RDMA 相关bug记录
    Java集合——Set接口
    Vue/ Vue ELement框架、表单效验正则属性、兜底效验(点击登录后会验证文本框是否满足条件)
    电力系统直流潮流分析【N-1】(Matlab代码实现)
    【SpringMVC】自定义注解
    mysql 存储过程详解
    KMeans算法与GMM混合高斯聚类
    unity 渲染环境设置
    Python爬虫教程:如何爬取教育漏洞报告平台中的漏洞报告?
  • 原文地址:https://blog.csdn.net/embelfe_segge/article/details/126114157