小工具      在线工具  汉语词典  css  js  c++  java

spring boot前后端交互之数据格式转换(表单,URL,JSON)

# Spring Boot,spring boot,java,json 额外说明

收录于:152天前

在前后端分离开发的项目种,前端获取数据的方式基本都是通过Ajax。请求方法也有所不同,常见的有POST,GET,PUT,DELETE等。甚至连请求的数据类型都不一样,x-www-form-urlencodeed,form-data,json等。

那么前后端交互时如何接收具体数据呢?

spring boot接收JSON数据

{
    
 "id": 0,
  "address_id": 6,
  "detail_address": "我是11251111111",
  "user_id": 611111,
  "create_time": null,
  "update_time": null,
  "name": "测试人11111",
  "phone": "13378954789111"
}
@RequestMapping(value = "/add",method = RequestMethod.POST,produces = "application/json;charset=UTF-8")
 public ResponseData addUsers(@RequestBody UserInfo userInfo){
    
     if (StringUtils.isNotEmpty(userInfo.getAccount())){
    
         if (userInfoService.ifUserExist(userInfo.getAccount())){
    
             return ResponseData.error(500,"账户已存在,请重新设置!");
         }
     }
     System.out.println(userInfo.toString());
}

在这里插入图片描述
接收json数据的两个关键点:

  • json 类型声明
produces = "application/json;charset=UTF-8"

@RequestMapping接口声明传输类型不是json。

  • @RequestBody声明Java Bean

json数据必须使用对象接收,并且必须使用@RequestBody声明,并且json key必须对应bean的成员变量名。

spring boot 接收x-www-form-urlencodeed表单数据

在这里插入图片描述
表单数据有两种接收类型:

  • @RequestParamReceive
    @RequestMapping(value = "/fuzzy",method = RequestMethod.POST)
    public ResponseData fuzzyQuery(@RequestParam("carType") Integer carTpe, @RequestParam("carStatus") Integer carStatus, @RequestParam("name") String name, @RequestParam("carNo") String carNo){
    
        //String name1 = "%"+name+"%";
        List<CarInfo> carInfos = carInfoService.fuzzySelect(carTpe, carStatus, name, carNo);
        return ResponseData.success(carInfos);
    }

使用@RequestParam的传入参数名必须与接收的参数名一致。如表单传入name = 'mike',则后端接受时:@RequestParam("name") String name

  • 对象接收
    @RequestMapping(value = "/pageList",method = RequestMethod.POST)
    public ResponseData carPageList(CarInfoSelect carInfoSelect){
    
        IPage<CarInfoResult1> page = carInfoService.carPageList(carInfoSelect);
        //LayuiPageInfo pageInfo = LayuiPageFactory.createPageInfo(page);
        return ResponseData.success(page);
    }

从表单传入的参数有很多。这些参数被封装成一个java对象来接收。不需要注释。注意与josn数据的区别。

spring boot 接收URL数据

  • /tmp?name=mike类型

这种接收方法不要写错。下面这张图是错误的:

在这里插入图片描述
这样输入是就会报错404

在这里插入图片描述

该类型的传参,url通过/tmp?name=mike这样传,接收知道对应的url,不用写?和其后面的字段

@GetMapping("/tmp")
public String getName(String name){
    
    System.out.println(name);
    return name;
}

在这里插入图片描述

  • /tmp/{type}/{page}的参数接收
@GetMapping("/item/{type}/{page}")
public String getParvalue(@PathVariable("type") String type, @PathVariable("page")Integer page){
    
   return "类型:"+type+"页数"+page;
}

在这里插入图片描述

总结:

  1. 只有两种类型不需要使用注解:
  • 收到表单对象
  • /tmp?name=mike类型的参数接收
  1. 需要使用注解的有:JSON,表单的单个接收,/tmp/{type}/{page}的参数接收
. . .

相关推荐

额外说明

使用JS实现短信验证码倒计时案例

本章教程利用JS实现发送短信倒计时案例,这个需求在实际开发过程很常见。 目录 一、程序代码 二、预览展示 一、程序代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

额外说明

JVM GC日志分析

查看GC日志 第一种 package thread; public class JvmGcTest { public static void main(String[] args) { byte[] data = new b

额外说明

junit学习(十)——Springpring与Hibernate整合的单元测试

1、在项目中添加Spring x.x Core Libraries和Hibernate x.x Core Libraries,方法与前两篇相同。 需要注意的是:Hibernate最好使用3.3及以上版本。 我本地测试时,Spring2.5版本,Hiber

额外说明

向量召回:深入评估离线体系,探索优质召回方法

向量召回:深入评估离线体系,探索优质召回方法 1.简介 近年来,基于向量进行召回的做法在搜索和推荐领域都得到了比较广泛的应用,并且在学术界发表的论文中,基于向量的 dense retrieve 的方法也在不少数据集上都战胜了 sparse retriev

额外说明

【javascript编程思维】间隔性与延时性定时器的区别 , 如何停止定时器?

- 作者 :“大数据小禅” - 粉丝福利 :加入小禅的大数据交流群 - 欢迎小伙伴们 点赞-、收藏⭐、留言- 间隔性与延时性定时器的区别 间隔型定时器 setInterval(fun,time) fun为执⾏的函数 time为间隔执⾏的时间,单位为毫秒,

额外说明

【NLP】⚠️学不会打我! 半小时学会基本操作 3⚠️ 词袋模型

【NLP】⚠️学不会打我! 半小时学会基本操作 3⚠️ 词袋模型 概述 词袋模型 向量化 概述 从今天开始我们将开启一段自然语言处理 (NLP) 的旅程. 自然语言处理可以让来处理, 理解, 以及运用人类的语言, 实现机器语言和人类语言之间的沟通桥梁.

额外说明

【Unity3D开发小游戏】《炸弹人游戏》Unity开发教程

文章目录 一、前言 二、资源下载 三、让我们开始吧 版本 1.背景色 2.创建级别 3.炸弹人 4.炸弹人物理 5.炸弹人移动 6.炸弹 7.爆炸效果 8.制造怪物 9.怪物物理 10.怪物移动 11.添加更多怪物 12.摘要 一、前言 我们的炸弹人游戏

额外说明

基于springboot+jpa 实现多租户动态切换多数据源 - 使用Flyway实现多数据源数据库脚本管理和迭代更新

多租户动态多数据源系列 1、基于springboot+jpa 实现多租户动态切换多数据源 - 数据隔离方案选择分库还是分表 2、基于springboot+jpa 实现多租户动态切换多数据源 - 基于dynamic-datasource实现多租户动态切换数

额外说明

第2章[2.1] 开发模式及快速测试方式

Ext JS 开发模式的分类及演进 Ext JS开发模式的演进历程基本就代表了Web开发模式演进的大致方向,即: 早期的Ext JS类似于JQuery, 是一个前端的组件库, 开发方式是导入一个JS的文件和一个CSS的样式文件。随着前端框架的发展,Ext

额外说明

前端(十三)——JavaScript 闭包的奥秘与高级用法探索

-博主:小猫娃来啦 -文章核心:深入理解 JavaScript 中的闭包 文章目录 不理解闭包?这玩意很难? 闭包的定义与原理 闭包是什么 创建一个闭包 闭包的应用场景 闭包与作用域 闭包与作用域之间的关系 全局作用域、函数作用域和闭包的区别 闭包对变量

ads via 小工具