@RequestParam和@RequestPart的区别

2023-05-16

@RequestPart

  • @RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
  • 支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的

@RequestParam

  • @RequestParam支持’application/json’,也同样支持multipart/form-data请求

区别

  • 当请求方法的请求参数类型不是String 或 MultipartFile / Part时,而是复杂的请求域时,@RequestParam 依赖Converter or PropertyEditor进行数据解析, RequestPart参考 ‘Content-Type’ header,依赖HttpMessageConverters 进行数据解析

  • 当请求为multipart/form-data时,@RequestParam只能接收String类型name-value值,@RequestPart可以接收复杂的请求域(像json、xml);@RequestParam 依赖Converter or PropertyEditor进行数据解析, @RequestPart参考'Content-Type' header,依赖HttpMessageConverters进行数据解析

前台请求:
jsonDataPerson对象的json字符串
uploadFile为上传的图片
在这里插入图片描述

后台接收:

  1. @RequestPart可以将jsonDatajson数据转换为Person对象
@RequestMapping("jsonDataAndUploadFile")
@ResponseBody
public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,
                                    @RequestPart("jsonData") Person person) {
    StringBuilder sb = new StringBuilder();
    sb.append(uploadFile.getOriginalFilename()).append(";;;"));
    return person.toString() + ":::" + sb.toString();
}
  1. @RequestParam对于jsonDatajson数据只能用String字符串来接收
@RequestMapping("jsonDataAndUploadFile")
@ResponseBody
public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,
                                    @RequestParam("josnData") String jsonData) {
    StringBuilder sb = new StringBuilder();
    sb.append(uploadFile.getOriginalFilename()).append(";;;"));
    return person.toString() + ":::" + sb.toString();
}

总结

当请求头中指定Content-Type:multipart/form-data时,传递的json参数,@RequestPart注解可以用对象来接收,@RequestParam只能用字符串接收

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@RequestParam和@RequestPart的区别 的相关文章

  • Java中CountDownLatch介绍与应用

    正如每个Java文档所描述的那样 xff0c CountDownLatch是一个同步工具类 xff0c 它允许一个或多个线程一直等待 xff0c 直到其他线程的操作执行完后再执行 在Java并发中 xff0c countdownlatch的
  • Windows下搭建 Rust 开发环境

    Rust 支持很多的集成开发环境 xff08 IDE xff09 或开发专用的文本编辑器 查看官网公布支持的开发工具 Rust 的编译工具依赖 C 语言的编译工具 xff0c 可以使用 Microsoft C 43 43 生成工具 或者 M
  • ubuntu安装mysql错误处理

    1 错误信息 W GPG error http repo mysql com apt ubuntu xenial InRelease The following signatures were invalid KEYEXPIRED 1487
  • 如何安装 SUSE Linux Enterprise Server 15 SP4

    SUSE Enterprise Linux Server SLES 是一种现代的模块化 Linux 发行版 xff0c 主要为服务器和大型机开发 它专注于支持生产工作负载 xff0c 通常由大型组织用于托管和运行应用程序 SUSE还支持传统
  • Xcode 之nib文件

    在iOS 开发中 xff0c 不可避免的肯定会接触到interface builder xff0c 也就是IB窗口 这儿IB就是使用nib文件储存GUI资源 这儿所说的nib文件是一种数据文件 xff0c 用于存储可在应用程序需要时使用的一
  • 出现 mkdir() Permission denied 问题解决

    正常我们在写项目的时候 xff0c 本地可以可以使用 xff0c 部署到服务器为什么就出现这个错误了呢 xff1f 因为我们服务器使用的是Linux系统 xff0c 默认的目录权限没有全部开启的 xff0c 造成执行创建文件的时候报错 xf
  • 报错A non well formed numeric value encountered(Thinkphp5时间戳自动转换问题)

    数据库表字段设置 datetime类型 xff0c 渲染的时候系统会自动进行转换 xff0c datetime类型再做一次转换就出现了 A non well formed numeric value encountered 错误 解决方法
  • 【开箱即用】VirtualBox Ubuntu20.04.6、22.04.2虚拟机下载

    简介 今天继续我们的开箱即用系列 为了简化Ubuntu虚拟机的制作 xff0c 减少重复劳动 xff0c 提高生产效率 xff0c 本公众号提供了基于VirtualBox制作的Ubuntu纯净虚拟机 xff0c 供学习交流使用 下载 Ubu
  • anaconda安装后桌面无快捷方式

    在安装目录的Anaconda3 Scripts中找到需要的exe文件 xff0c 生成快捷方式到桌面即可 如果想要改变快捷方式的图标 xff0c 可以在桌面快捷方式上右键选择属性 xff0c 点击更改图标 浏览 输入图标地址 在安装的Ana
  • 洛谷 [P1825 [USACO11OPEN]Corn Maze S] {搜索|BFS} 奋斗的珂珂~

    题目描述 This past fall Farmer John took the cows to visit a corn maze But this wasn t just any corn maze it featured severa
  • 个人对测试的理解--自动化UI测试

    系列文章目录 整理下个人对测试的一些想法和理解 xff0c 个人之见 文章目录 系列文章目录整体思路UI测试WEB UIselenium快速入门 APP UIappnium快速入门 airtest快速入门 桌面应用 UIpywinauto快
  • 什么是对象?什么是面向对象程序设计?面向对象语言有什么优点?

    在初学面向对象语言的时候 xff0c 很多书都会有这样的句子 一切都是对象 那么对象究竟是什么呢 xff1f 是不是一切的事物都叫对象 xff1f 但这里的对象并不是我们日常生活中的对象 xff08 事物 xff09 xff0c C 中我们
  • 远程桌面无法复制东西

    今天突然用远程桌面复制的时候发现无法复制东西 xff0c 然后上网查了一下 xff0c 解决办法就是重启一下他 xff1a rdpclip exe 重启方法就是打开任务管理器 xff0c 杀掉rdpclip exe xff0c 然后再运行他
  • ubuntu 20.0.4 qt 程序打包发布及解决 xcb 加载错误的解决方法

    ubuntu 中如何通过 批处理命令进行 qt 程序的打包发布 xff0c 参见 博文 xff1a https blog csdn net qq21497936 article details 85396652 ops request mi

随机推荐

  • mamp pro apache 中文目录浏览乱码

    解决办法 xff1a 打开mamp pro apache配置文件httpd conf xff0c 在任意一行后加入 xff1a span class hljs attribute IndexOptions Charset span 61 s
  • PyTorch入门二:LSTM实现MNIST手写数字识别

    参考博客 xff1a https blog csdn net winycg article details 88937583 LSTM Long Short Term Memory xff0c 长短时记忆网络 xff0c 主要用于传统RNN
  • Python之Networkx详解

    文章目录 1 安装Networkx2 Networkx的基本使用2 1 导入networkx2 2 创建Graph2 3 给Graph添加边2 3 Graph基本信息获取2 4 Graph的绘制2 5 Graph的其他内置算法 3 其他3
  • 基于gunicorn部署flask项目

    文章目录 1 WSGI协议2 gunicorn介绍3 gunicorn安装4 gunicorn使用4 1 基于Flask创建python服务4 2 配置参数 启动应用服务4 2 1 命令行配置gunicorn参数4 2 2 文件配置guni
  • Python日志记录库——loguru

    loguru简单且强大的日志记录库 https zhuanlan zhihu com p 446232870
  • 批量删除word中的换行符号

    在Word中 xff0c 回车符有两种 xff0c 即 硬回车 和 软回车 硬回车是直接敲键盘上的Enter键 xff0c 软回车是按键盘上的 Shift 43 Enter 硬回车 输入快捷键 xff1a Enter xff0c 作用 xf
  • 把字符串中的字符进行排序

    把字符串中的字符进行排序 xff1a 把字符串中的字符进行排序 toCharArray xff1a 把字符串转换为字符数组 valueOf xff1a 把字符数组转换为字符串 1 把字符串中的字符进行排序 举例 xff1a 34 dacge
  • 【Ubuntu切换内核版本】NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

    文章目录 一 有图形界面二 无图形界面2 1 查看当前内核版本2 2 查看内核启动顺序2 3 切换内核 服务器信息 xff1a Ubuntu 18 04 服务器重新启动后 xff0c 内核可能被自动更新 xff0c 这就会造成开机后服务器有
  • 深入解析最短路径算法

    转载自 xff1a http blog csdn net fengchaokobe article details 7478774 第一节 问题的提出及解决方法 所谓最短路径问题 xff0c 可以说有两种情况来描述 描述一 xff1a 在图
  • 图像特征提取(颜色,纹理,形状)

    本文主要内容转载自博客 xff1a http blog csdn net abcjennifer article details 7424971 http blog csdn net abcjennifer article details
  • latex中公式过长问题的解决

    latex中公式过长通常有以下几个解决方案 xff1a xff08 1 xff09 使用amsmath package的split环境 begin equation begin split F 61 F x in F c amp S gt
  • LATEX使用 图文混排,文字环绕插图

    插入图片时 xff0c 使用如下命令 xff1a begin wrapfigure 行数 位置 超出长度 宽度 lt 图形 gt end wrapfigure 这里行数是指图形高度所占的文本行的数目 如果不给出此选项 xff0c wrapf
  • Linux解压文件到指定目录

    tar是Linux中常用的打包 压缩 加压缩工具 xff0c tar的参数很多 xff0c 这里仅仅列举常用的压缩与解压缩参数 tar的参数 xff1a c xff1a create 建立压缩档案的参数 x xff1a 解压缩压缩档案的参数
  • SpringBoot 项目在 kubernetes 集群中启动速度过慢

    问题描述 在实际开发过程中 将 springboot 项目打成 Docker 镜像部署在 kubernetes 集群中 并启动容器实例 打开日志 发现很久才能刷一条日志 并且项目启动超过 10 分钟 如下为服务 yaml span clas
  • 结构体和文件操作

    include lt stdio h gt define NUM 3 int main struct stu char name NUM int age int score int number stu Stu NUM stu p for
  • IOS:表视图

    表视图是在iOS应用中最常见到的用户接口对象 表视图将数据以多行可滑动列表的形式展现 xff0c 并且可以以章节的形式展示 表示图有很多目的 xff1a 让用户通过分等级的结构浏览数据 呈现一个带索引的列表 通过在视觉上清晰的分组来展示详细
  • iOS UIBezierPath贝塞尔曲线常用方法

    关于 UIBezierPath UIBezierPath这个类在UIKit中 xff0c 是Core Graphics框架关于path的一个封装 xff0c 使用此类可以定义简单的形状 xff0c 比如我们常用到 xff0c 矩形 xff0
  • c++ (优化)百钱买百鸡

    问题 百钱买百鸡问题 xff1a 公鸡五文钱一只 xff0c 母鸡三文钱一只 xff0c 小鸡三只一文钱 xff0c 用100文钱买100只鸡 xff0c 公鸡 母鸡 小鸡各买多少只 第一种方法 三层循环 xff08 穷举法 xff09 s
  • JPA的@Query用法

    文章目录 64 Query作用使用例子简单使用like表达式原生sql 传参方式SPEL表达式nativeQuery 作用更新操作删除操作 64 query返回自定义字段 64 query返回自定义对象 64 Query作用 64 Quer
  • @RequestParam和@RequestPart的区别

    64 RequestPart 64 RequestPart这个注解用在multipart form data表单提交请求的方法上 支持的请求方法的方式MultipartFile xff0c 属于Spring的MultipartResolve