【JavaEE】_Spring MVC项目之使用JSON传参

本文介绍了在SpringMVC项目中如何使用JSON格式进行前后端数据传递,重点关注了`@RequestBody`注解的使用以及与对象传参的区别,强调了在实际开发中JSON的普遍性和可扩展性。
摘要由CSDN通过智能技术生成

目录

1. 关于JSON

1.1 JSON简介

1.2 JSON语法

1.3 JSON两种结构

2. 关于@RequestBody注解

2.1 没有该注解的情况

2.2 使用该注解后的情况

关于MVC项目前后端传参数据类型选择的总结:


在本专栏中已经介绍过关于Spring MVC项目传参的常见方式:

单个或多个参数:

【JavaEE】_Spring MVC 项目单个及多个参数传参-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136436410对象传参:

【JavaEE】_Spring MVC项目之使用对象传参-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136513718数组或集合传参:

【JavaEE】_Spring MVC项目使用数组与集合传参-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136489044但在实际开发中,使用以上方式进行传参的扩展性非常差(对象相比而言稍强),当需求发生变更时,就需要修改接口;

注意此处的接口与SE阶段的interface不同,而是指API,是应用程序提供的服务,接口对应在代码上通常是指方法;

1. 关于JSON

1.1 JSON简介

1. JSON即JavaScript Object Notation,JavaScript对象表示法;

在Servlet部分前端POST请求使用json向后端传参时就曾提到过json,原文链接如下:

【JavaEE】_前端POST请求使用json向后端传参-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/1362865772. json就是一种数据格式,使用文本表示一个对象或数组的信息;

3. json本质是一个表示对象的字符串,负责在不同的语言中进行数据的传递和交换;

1.2 JSON语法

1. 数据在键值对(key-value)中,其中key必须为字符串(需用引号括起来)

2. 键与值用冒号分割,数据用逗号分隔;

3. 对象用{ }表示,数组用[ ]表示

4. 值可以为对象,也可以为数组,数组中可以包含多个对象;

1.3 JSON两种结构

1. 对象:大括号{ }保存的对象是一个无序的键值对集合;

2. 数组:中括号[ ]保存的数组是值(value)的有序集合;

2. 关于@RequestBody注解

2.1 没有该注解的情况

现令.java文件内容如下:

package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M8")
    public String m8(Person person){
        return "Parameters have received: \n"
                + person.toString();
    }
}

运行启动类后,使用postman构造HTTP请求并发送,详情如下:

注意在默认情况下,使用对象进行传参时,默认请求数据组织形式为key-value形式,会使用key和属性进行匹配,比如,在请求的query string部分显式标明key-value形式参数,此时再进行发送:

可使用fiddler抓包查看HTTP请求详情:

并未将在请求中构造的该数据构成一个Person对象。

需要实现预期效果,需要使用@RequestBody属性;

2.2 使用该注解后的情况

@RequestBody [对象类型] [对象名]表示将请求的正文转成这个对象

现令.java文件内容如下:

package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M8")
    public String m8(@RequestBody Person person){
        return "Parameters have received: \n"
                + person.toString();
    }
}

运行启动类后,再次构造HTTP请求并发送,详情如下:

即:若前后端传参传递的是JSON数据,需要使用@RequestBody注解;

但请注意:
(1)JSON只能作为请求正文(即参数一定Body中),不能作为参数的一部分(如QueryString部分某属性的值设置为JSON格式是不可以的),整个请求的正文(body部分)都会被转换为一个对象

(2)要求构造的请求的Body部分的参数必须符合json字符串的格式要求,不能写成key-value格式;


关于MVC项目前后端传参数据类型选择的总结:

1. 在实际开发中,使用最多的数据格式为JSON, 即使是单个参数,大多数情况下也是使用JSON的对象,只是仅有一个属性;

2. 在少数情况下,如果仅通过一个属性(比如id)就可以获取到想要的请求信息,就可以使用单个对象传参;

在开发中尽量新增而非修改代码,是大型开发中的重要思想,JSON格式与对象的使用最为频繁。

  • 34
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值