SpringMVC(4):获取参数,上传文件

SpringMVC(4):获取参数,上传文件

文章目录

1. 从 url 中获取参数

这是从今日头条上,获取到的网页 url,当我想获取到网页的url中的文章标识,也就是参数的时候,该怎么做?

获取单个参数

需要在建立资源路径的时候,定义 articleID。

用{},表示你要获取的参数。

当你输入资源路径的时候,只要匹配上{}里面的参数,就会把这个参数,赋值给方法变量 article。

真正实现,还需要一个注解:@PathVariable

@PathVariable:路径变量 和字⾯表达的意思⼀样,这个注解主要作⽤在请求URL路径上的数据绑定

当你的URL路径上的数据中的{ }包含的变量名,和使用 @PathVariable注解 修饰的变量名一致,就可以获取到URL路径上的参数。

@PathVariable需要注意的点

  1. 默认情况下@PathVariable 的参数名需要与 URI 模板中的占位符名称一致。
  2. @PathVariable 默认是必填 的。可以通过修改取消默认必填(required = false

获取多个参数

获取多个参数,需要在 资源路径中,再定义一个变量

在方法参数那里,再定义一个参数,和 资源路径 中那个变量,对应起来

使用Postman发送请求:http://127.0.0.1:8080/request/article/博客/12345

修改成非必传参数

如果你不想在网址中传入某一个参数并获取它,可以这么做:

java 复制代码
@PathVariable(value = "articleID",required = false)

但是,不建议这么做吧,还是要规范。

网址传入参数还是得传。

获取多个参数时,注意的点:

1. 变量名相对应

这里的参数,在方法参数处,定义变量名的时候,一定要和url路径中绑定的数据名({}里面的变量名)相对应!!!

2. 定义顺序可以不一致

对于 方法参数的定义顺序 ,和url路径中绑定的数据({}里面的变量 ),不要求一致 !!!

3. 资源路径要对应

输入资源路径的时候,要和 定义 的资源路径对应上才行

4. 要有匹配的资源路径

当我们的资源路径,有两个需要获取的参数时:

我们输入的 URL 中,必须要有与之对应的值。

也就是说:URL 中 (XXX/article/ ) article 之后,必须要有两个值,才能匹配,否则找不到资源。

就好比说,输入的网址输错了,也是资源不存在(状态码:404)

5. 不建议方法参数同类型

当方法参数的多个参数的类型,都是一样的时候,可读性不高

6. 可以重命名

当你不想让方法参数的变量名和绑定数据的名字一样的时候,我们可以在 @PathVariable 注解括号中,定义URL路径上的绑定的数据名:

重命名后,资源路径中被绑定的数据,根据方法参数前重命名的名字,进行匹配。

2. 上传文件

在开发时,上传文件这个需求,是一个非常常见的业务。

通过请求发送过来的文件,我们使用 MultipartFile 这个类,来进行接收

这个单词的意思是:多部分文件。 也就是可以用这个类,来接收多种文件,如:文本,视频,图片...

1. 示例:上传图片

代码:

使用 postman 上传文件:


运行结果:

2. 可以对上传的文件,进行操作

读取文件(按照字节方式进行读取)

直接上传本地电脑

这里需要使用一个新的方法:transferTo()方法,使用的时候,需要new一个新的 File对象,然后填写你要存放的路径,注意路径的写法:D:\MuMuPlayer-12.0\ 最后的 ' \ ' ,是让文件保存到当前文件夹里面。

然后加上文件名 :file.getOriginalFilename()

效果:

transferTo()方法 做的事情,是对文件复制操作的一个封装。

3. 接收文件的参数重命名

这里参数名不匹配,可以使用重命名的方式。

这里需要用一个新的注解:@RequestPart( ),括号里面,填写一个和发送方相同的参数名。

效果:

3. 路径参数和请求参数

对于请求参数和路径参数,不用纠结

重点是要学会获取参数即可。

4. @RequestPart( )注解 和 @RequestParam()注解的区别

都是可以用于重命名的,但是,这两个注解,有什么区别?

@RequestPart( )注解

@RequestPart 注解用于处理 multipart/form-data 表单提交请求的方法上。它适用于复杂的请求域(如 JSON、XML) ,并且支持 MultipartFile(文件) 类型的请求参数。

@RequestParam( )注解

@RequestParam 注解用于将请求参数绑定到方法参数上。它适用于简单的 name-value 形式的请求参数,通常用于处理表单数据或 URL 查询参数。@RequestParam 支持 'application/json' 和 'multipart/form-data' 请求。

主要区别

  1. 请求类型:@RequestParam 适用于简单的 name-value 形式的请求参数,而 @RequestPart 适用于复杂的请求域(如 JSON、XML)。
  2. 数据解析:@RequestParam 依赖于 Converter 或 PropertyEditor 进行数据解析,而 @RequestPart 依赖于 HttpMessageConverters 进行数据解析。
  3. 适用场景:@RequestParam 适用于处理表单数据或 URL 查询参数,而 @RequestPart 适用于处理 multipart/form-data 表单提交请求。

5. 总结

这个博客,你唯一的重点就是:学会如何获取 URL 中的参数的操作即可。

这里我们主要学习了几个新的知识点:

  1. @PathVariable

    @PathVariable:路径变量 和字⾯表达的意思⼀样,这个注解主要作⽤在请求URL路径上的数据绑定

    当你的URL路径上的数据中的{ }包含的变量名,和使用 @PathVariable注解 修饰的变量名一致,就可以获取到URL路径上的参数。

    学会获取单个参数 和 多个参数

  2. MultipartFile 类,getOriginalFilename()方法

    通过请求发送过来的文件,我们使用 MultipartFile 这个类,来进行接收。

    还可以通过,MultipartFile 类实例出来的对象,调用 getOriginalFilename() 方法,来获取到文件的源名字。

  3. transferTo()方法

    可以通过 transferTo()方法,将上传的文件,保存到本地的服务器当中。

  4. @RequestPart( )注解

    上传文件的时候,如果请求的参数和接收的参数名,不一致,可以通过 @RequestPart( )注解,给接收参数进行重命名,匹配请求的参数名。

最后,如果这篇博客能帮到你的,请你点点赞,有写错了,写的不好的,欢迎评论指出,谢谢!

下一篇博客:SpringMVC(5) Cookie和Session

相关推荐
MSTcheng.40 分钟前
探索昇腾底层逻辑:从ops-nn视角解读aclnn两阶段设计理念
mvc
独断万古他化2 小时前
【SSM开发实战:博客系统】(三)核心业务功能开发与安全加密实现
spring boot·spring·mybatis·博客系统·加密
若鱼19193 小时前
SpringBoot4.0新特性-Observability让生产环境更易于观测
java·spring
跳动的梦想家h3 小时前
环境配置 + AI 提效双管齐下
java·vue.js·spring
独断万古他化4 小时前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
vx1_Biye_Design5 小时前
基于Spring Boot+Vue的学生管理系统设计与实现-计算机毕业设计源码46223
java·vue.js·spring boot·spring·eclipse·tomcat·maven
Hx_Ma165 小时前
SpringBoot数据源自动管理
java·spring boot·spring
java1234_小锋5 小时前
Java高频面试题:Spring和SpringBoot的关系和区别?
java·spring boot·spring
梵得儿SHI6 小时前
(第十篇)Spring AI 核心技术攻坚全梳理:企业级能力矩阵 + 四大技术栈攻坚 + 性能优化 Checklist + 实战项目预告
java·人工智能·spring·rag·企业级ai应用·springai技术体系·多模态和安全防护
逍遥德6 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring