Spring MVC接收参数方式

embedded/2024/10/15 3:35:56/

1. 使用 @RequestParam

@RequestParam 注解用于将请求中的参数绑定到控制器方法的参数上。

基本用法
java">@GetMapping("/example")
public String example(@RequestParam("paramName") String param) {// 处理 paramreturn "result";
}
可选参数

可以设置 required 属性为 false,并提供一个 defaultValue

java">@GetMapping("/example")
public String example(@RequestParam(value = "paramName", required = false, defaultValue = "default") String param) {// 处理 paramreturn "result";
}

2. 接收多个请求参数

可以使用 Map<String, String> 来接收所有请求参数。

java">@GetMapping("/example")
public String example(@RequestParam Map<String, String> params) {// 处理所有请求参数for (String key : params.keySet()) {System.out.println(key + ": " + params.get(key));}return "result";
}

3. 使用 @PathVariable

当 URL 包含动态部分(路径参数)时,可以使用 @PathVariable 注解来捕获这些变量。

java">@GetMapping("/example/{id}")
public String example(@PathVariable("id") Long id) {// 处理 idreturn "result";
}

4. 使用 @RequestBody

@RequestBody 注解用于接收 JSON 或 XML 格式的请求体,并将其转换为 Java 对象。

java">@PostMapping("/example")
public String example(@RequestBody MyObject myObject) {// 处理 myObjectreturn "result";
}
自定义对象的示例
java">public class MyObject {private String name;private int age;// Getters and Setters
}// 控制器
@PostMapping("/example")
public String example(@RequestBody MyObject myObject) {System.out.println(myObject.getName());return "result";
}

5. 使用 @ModelAttribute

@ModelAttribute 用于将请求参数自动封装到 Java 对象中,通常用于表单提交。

java">public class MyForm {private String username;private String password;// Getters and Setters
}@PostMapping("/submit")
public String submit(@ModelAttribute MyForm myForm) {// 处理 myFormreturn "result";
}

6. 接收文件上传

对于文件上传,可以使用 @RequestParam 并指定类型为 MultipartFile

java">@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {if (!file.isEmpty()) {// 处理文件String filename = file.getOriginalFilename();System.out.println("Uploaded file: " + filename);}return "result";
}

7. 使用 @RequestHeader

可以使用 @RequestHeader 来获取 HTTP 请求头信息。

java">@GetMapping("/example")
public String example(@RequestHeader("User-Agent") String userAgent) {// 处理 User-Agentreturn "result";
}

8. 使用 @CookieValue

可以通过 @CookieValue 来获取 cookie 值。

java">@GetMapping("/example")
public String example(@CookieValue("sessionId") String sessionId) {// 处理 sessionIdreturn "result";
}

9. 处理复杂对象

你可以结合 @ModelAttribute 和嵌套对象来处理更复杂的表单。

java">public class Address {private String street;private String city;// Getters and Setters
}public class User {private String name;private Address address;// Getters and Setters
}@PostMapping("/user")
public String createUser(@ModelAttribute User user) {// 处理用户信息return "result";
}

10. 接收多个 Query 参数

java">@GetMapping("/example")
public String example(@RequestParam("param1") String param1, @RequestParam("param2") String param2) {// 处理 param1 和 param2return "Result: " + param1 + ", " + param2;
}

11. 创建一个 POJO 类来封装多个 Query 参数

java">public class QueryParams {private String param1;private String param2;// Getters and Setters
}@GetMapping("/example")
public String example(QueryParams queryParams) {// 处理 queryParamsreturn "Result: " + queryParams.getParam1() + ", " + queryParams.getParam2();
}

总结

Spring MVC 提供了灵活多样的方法来接收请求参数,包括从 URL、请求体、请求头、cookie 等多种来源。选择合适的方法,不仅能让代码更加简洁,还能提高可维护性和可读性。在实际开发中,根据具体需求合理使用这些注解,将大大提高你的开发效率。


http://www.ppmy.cn/embedded/127670.html

相关文章

【笔记】408刷题笔记

文章目录 三对角三叉树求最小带权路径UDP报文首部和TCP报文首部IP报文首部TCP报文首部UDP报文首部 刷新和再生的区别地址译码 为了区分队空队满&#xff0c;可以使用三种处理方式 1&#xff09;牺牲一个单元 队头指针在队尾指针的下一位置作为队满的标志 队满条件&#xff1a;(…

FPGA驱动HDMI 初级篇

简介 本章节主要讲述如何通过FPGA驱动HDMI显示。 本章节框图如下: bd框图中使用了两个IP核,分别是Video Timing controller核AXI4-Stream to video out两个模块,下面先对两个模块做介绍。 Video Timing controller 配置如下: 这里由于没有使用ZYNQ PS端,…

[蓝桥杯 2017 省 B] 日期问题

小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是&#xff0c;这些日期采用的格式非常不统一&#xff0c;有采用年/月/日的&#xff0c;有采用月/日/年的&#xff0c;还有采用日/月/年…

【题解】【动态规划01背包问题】—— [NOIP2012 普及组] 摆花

【题解】【动态规划01背包问题】—— [NOIP2012 普及组] 摆花 [NOIP2012 普及组] 摆花题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 解法1.二维 d p dp dp1.1.思路解析1.2.AC代码 解法2.一维 d p dp dp2.1.思路解析2.2.AC代码 3.扩展:前缀和优化 [NOIP2012 普及组…

互联网IT行业最“烫手”的六大证书!

PMP&#xff08;项目管理专业人员资格认证&#xff09; 报名条件&#xff1a;本科学历3年项目经验 考试时间&#xff1a;一年4次考试&#xff0c;分别在3、6、8、11各举行一次考试。 就业前景&#xff1a;适合IT项目经理、项目管理、助理、专员、产品经理等职位 含金量: 部…

【cocos creator】输入框滑动条联动小组建

滑动条滑动输入框内容会改变 输入框输入&#xff0c;滑动条位置改变 const { ccclass, property } cc._decorator;ccclass() export default class SliderEnter extends cc.Component {property({ type: cc.Float, displayName: "最大值", tooltip: "" }…

MySQL运维

MySQL运维 创建健壮的MySQL健康检查Python类 在本文中&#xff0c;我们将介绍如何创建一个强大而灵活的Python类&#xff0c;用于封装MySQL运维命令并提供易用的接口。这个类不仅支持后续扩展&#xff0c;还提供完备的响应和错误信息&#xff0c;同时要求必要的登录信息以确保…

git 相关问题解决一一记录

文章目录 gitssh.github.com: Permission denied (publickey)1. 检查 SSH 密钥生成新的 SSH 密钥添加 SSH 密钥到 GitHub 2. 配置 SSH 代理启动 SSH 代理添加私钥到 SSH 代理 3. 检查 SSH 配置文件4. 测试 SSH 连接5. 检查防火墙和网络设置6. 检查 GitHub 账户设置详细步骤 更新…