当前位置: 首页 > news >正文

Spring Boot 注解详解:@RequestMapping 的多种用法

Spring Boot 注解:@RequestMapping 的多种用法

  • 核心依赖(Maven)
    • 1. 基础 GET 参数绑定
    • 2. 多个参数绑定
    • 3. 对象参数绑定
    • 4. 强制指定请求参数名
    • 5. JSON 请求体绑定
    • 6. 路径参数绑定
    • 7. 文件上传
    • 8. 指定请求方法
    • 9. 多路径映射
    • 10. 使用参数限制


核心依赖(Maven)

在 pom.xml 中添加 Spring Boot Web 依赖

  <!-- Spring Boot Web 模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

1. 基础 GET 参数绑定

@RequestMapping("/t1")
public String test1(String name) {return "hello " + name + " " + System.currentTimeMillis();
}

说明:

  • @RequestMapping("/t1"):映射路径 /t/t1(因为类上还有一个 /t 前缀)。
  • 方法参数 String name:Spring Boot 会自动根据请求参数名绑定值。
  • 适用于简单 GET 请求参数。

访问示例:

GET http://localhost:8080/t/t1?name=Tom
返回:hello Tom 1691380823456

2. 多个参数绑定

@RequestMapping("/t2")
public String test2(String name1, String name2) {return "hello " + name1 + " " + name2;
}

说明:

  • 同样使用 @RequestMapping,接收多个参数。
  • Spring 会自动匹配 URL 里的 name1name2

访问示例:

GET http://localhost:8080/t/t2?name1=Tom&name2=Jerry
返回:hello Tom Jerry

3. 对象参数绑定

@RequestMapping("/t3")
public String test3(student student) {return "hello " + student.toString();
}

说明:

  • 请求参数会自动映射到对象的同名属性上。
  • student 类必须有 nameage 等属性,并有 set/get 方法。

访问示例:

GET http://localhost:8080/t/t3?name=Tom&age=18
返回:hello student{name='Tom', age=18}

4. 强制指定请求参数名

@RequestMapping("/t4")
public String test4(@RequestParam("sname") String name) {return "hello " + name;
}

说明:

  • @RequestParam("sname"):绑定请求参数 sname 到方法参数 name
  • 如果请求里没有 sname 参数,会报错(除非设置 required=false)。

访问示例:

GET http://localhost:8080/t/t4?sname=Tom
返回:hello Tom

5. JSON 请求体绑定

@RequestMapping("/t5")
public String test5(@RequestBody student student) {return "hello " + student.toString();
}

说明:

  • @RequestBody:将请求体中的 JSON 转成 Java 对象。
  • 适合 POST 请求 JSON 数据。

访问示例(POST JSON)

POST http://localhost:8080/t/t5
Content-Type: application/json
Body:
{"name": "Tom","age": 18
}
返回:hello student{name='Tom', age=18}

6. 路径参数绑定

@RequestMapping("/t6/{id}/{name}")
public String test6(@PathVariable Integer id, @PathVariable String name) {return "hello " + id + " " + name;
}

说明:

  • @PathVariable:从 URL 路径中取值。
  • 路径参数名要和占位符一致。

访问示例:

GET http://localhost:8080/t/t6/123/Tom
返回:hello 123 Tom

7. 文件上传

@RequestMapping("/t7")
public String test7(@RequestParam("file") MultipartFile file) throws IOException {String filename = file.getOriginalFilename();file.transferTo(new File("D:/jtest/demo1" + filename));return "hello " + filename;
}

说明:

  • MultipartFile 用于接收上传文件。
  • file.transferTo() 保存文件到本地路径。

访问示例(POST form-data):

  • Key:file(类型 file)
  • Value:选择一个本地文件
  • 返回:hello test.jpg

8. 指定请求方法

使用 method 属性可以限定 HTTP 请求类型。

@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public User getUser() {return new User("Tom", 20);
}

常用方法类型:

  • RequestMethod.GET
  • RequestMethod.POST
  • RequestMethod.PUT
  • RequestMethod.DELETE

9. 多路径映射

@RequestMapping 支持多个 URL 映射。

@RequestMapping(value = {"/home", "/index"})
public String home() {return "首页";
}

上例中 /home/index 都会映射到 home() 方法。


10. 使用参数限制

可以通过 params 属性限定请求参数(访问时必须带name参数)。

@RequestMapping(value = "/search", params = "name")
public String search(String name) {return "搜索结果:" + name;
}
http://www.dtcms.com/a/324309.html

相关文章:

  • Docker 跨主机容器之间的通信macvlan
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DHCP欺骗、DHCP饿死)
  • Spring Boot与WebSocket构建物联网实时通信系统
  • LeetCode 子集
  • Java基础-Map接口
  • 香橙派 RK3588 部署 DeepSeek
  • SQL约束:数据完整性的守护者
  • Linux中rsync数据镜像工具的解析与应用实战
  • 如何在 Ubuntu 24.04 LTS Linux 上安装 MySQL 服务器
  • JavaScript防抖与节流:拯救你的网页卡顿危机!
  • GitHub 趋势日报 (2025年08月09日)
  • 通过Certbot自动申请更新HTTPS网站的SSL证书
  • vue中使用h5plus
  • 一些js数组去重的实现算法
  • 黑马SpringBoot+Elasticsearch作业2实战:商品搜索与竞价排名功能实现
  • 使用正则表达式检测Base64字符串并提取图片类型及正文的JavaScript函数,代码精简且高效
  • 250810-OpenWebUI集成Dify应用
  • 《设计模式》策略模式
  • STM32的计数模式和pwm模式
  • 亚麻云之数据安家——RDS数据库服务入门
  • sqli-labs-master/Less-62~Less-65
  • 01.【面试题】在SpringBoot中如何实现多数据源配置
  • (Python)爬虫进阶(Python爬虫教程)(CSS选择器)
  • 2025年全国青少年信息素养大赛Scratch编程践挑战赛-小低组-初赛-模拟题
  • Linux系统编程Day11 -- 进程状态的优先级和特性
  • 移动端音频处理实践:59MB变声应用的技术实现分析
  • 机器学习-增加样本、精确率与召回率
  • LeetCode 869.重新排序得到 2 的幂:哈希表+排序(一次初始化)
  • Android 16 KB页面大小适配的权威技术方案总结
  • Android快速视频解码抽帧FFmpegMediaMetadataRetriever,Kotlin(2)