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

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

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

收录于:18天前

在前后端分离开发的项目种,前端获取数据的方式基本都是通过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}的参数接收
. . .

相关推荐

额外说明

2022 chrome离线下载包

https://www.google.cn/intl/zh-CN/chrome/?standalone=1&platform=win64 standalone=1 说明是离线包

额外说明

Spring开发中常用注解总结

spring注解汇总 类别 注解 说明 Bean声明 @Component 定义基础层的通用组件,没有明确的角色 @Servcie 定义业务逻辑层的服务组件 @Repository 在数据访问层定义数据资源服务 @Controller 在展现层使用,用于

额外说明

智能文档相关问题

1.我是用uie-x做增值税专用发票实体信息提取。如果还有几十张其他类型的单据。能一起训练吗,还是一种单据一个taskflow 答:可以合并基于uie-x微调。 问:那每一种单据的schema不一样。一种单据需要启动一个Taskflow吧? 答:如果对推

额外说明

pytorch 中的执行模式

1. PyTorch 生态系统 PyTorch 支持 2 种独立的模式来处理研究和生产环境。 两种模式: PyTorch 中两种主流模式:研究模式, 比如 eager mode 和 生产模式,比如 graph mode 或者script mode)。 科

额外说明

操作系统--基于Linux的处理机调度时间片轮转法(超详细/设计/实验/作业/练习)

目录 课程名:操作系统原理及Linux应用 内容/作用:设计/实验/作业/练习 学习:基于Linux的处理机调度时间片轮转法 一、前言 二、环境与设备 三、原理 四、内容 五、总结与分析 课程名:操作系统原理及Linux应用 内容/作用:设计/实验/作业

额外说明

laravel最常见的问题

Laravel 是一个流行的 PHP 框架,它简化了 Web 应用程序开发过程。尽管 Laravel 提供了很多便利的功能和良好的文档,但仍然存在一些常见的问题可能会让开发者感到困惑。以下是一些常见的难题和问题: 环境配置问题:Laravel 需要特定的

额外说明

Windows系统缺少MSVCIRT.DLL文件导致程序无法启动

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个MSVCIRT.DLL文件(

额外说明

解决Windows系统目录dxtrans.dll文件丢失找不到的情况

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dxtrans.dll文件(

额外说明

Google Chrome浏览器将阻止混合内容–您准备好了吗?

最近,谷歌浏览器宣布他们很快将开始阻止网页上的混合内容(也称为不安全内容)。 最近,谷歌浏览器宣布它将很快开始阻止混合内容,即网页上的不安全内容。 此功能将从 2019 年 12 月开始逐步推出。这应该可以让网站所有者有足够的时间来检查混合内容错误并在该

ads via 小工具