Spring MVC 参数通报详解:从基础到实战
在 Spring MVC 中,参数通报是前后端交互的关键环节。通过把握差别类型的参数通报方式,开发者可以更高效地构建功能美满的 Web 应用。本文将详细介绍 Spring MVC 中的参数通报方法,包括查询参数、路径变量、哀求体、数组、聚集以及 JSON 数据的互换。
一、查询参数(Query Parameters)
查询参数通过 URL 的查询字符串通报,通常用于 GET 哀求。
1. 通过postman通报单个参数
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- @RequestMapping("r1")
- public String r1(String keyword){
- return "接收参数"+keyword;
- }
- }
复制代码
2.通过postman通报多个参数
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- @RequestMapping("r2")
- public String r2(String Username,String password){
- return "用户名Username:"+Username+"密码password:"+password;
- }
- }
复制代码 通过postman通报多个参数。
3. 通过 @RequestParam 进行重命名
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- @RequestMapping("r4")
- public String r4(@RequestParam(value = "q",required = false) String keyword){
- return "接收参数:"+keyword;
- }
- }
复制代码 通过postman观察:
4.可选参数
required 的默认值为true, 表⽰寄义就是: 该注解修饰的参数默认为必传
既然云云, 我们可以通过设置 @RequestParam 中的 required=false 来避免不通报时报错.
- @GetMapping("/users")
- public List<User> getUsers(@RequestParam(name = "age", required = false) int age) {
- return userService.getUsers(age);
- }
复制代码 二、路径参数(Path Variables)
路径参数将参数嵌入到 URL 路径中,实用于资源标识。
1. 通过 @PathVariable 接收参数
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- //从url当中获取参数
- @RequestMapping("/artic/{type}/{articID}")//必传参数
- public String r8(@PathVariable String type,@PathVariable Integer articID){
- return "文章类型:"+type+"获取文章ID:"+articID;
- }
- }
复制代码 通过postman测试:
如果不传这个参数通过postman测试:
得到验证:可以看到这个参数是必须传的。
2. 参数重命名
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- //从url当中获取参数(对articID重命名)
- @RequestMapping("/artic/{type}/{articID}")//必传参数
- public String r9(@PathVariable String type,@PathVariable("articID") Integer articalID){
- return "文章类型:"+type+"获取文章ID:"+articalID;
- }
- }
复制代码 三、对象
通报对象
先创建一个类UserInfo:
- import lombok.Data;
- @Data
- public class UserInfo {
- private String name;
- private String gender;
- private Integer age;
- }
复制代码 引入lombok依赖:
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.18.30</version>
- </dependency>
复制代码 解释: 引入lombok依赖,然后通过@Data注解,可以主动生成构造方法等等。
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- @RequestMapping("r3")
- public String r3(UserInfo userInfo){
- return "UserInfo="+userInfo.toString();
- }
- }
复制代码 通过postman进行通报对象的参数:
四、数组(Arrays)
用于通报一组相同类型的数据。
1. 通报数组
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- //传递数组
- @RequestMapping("r5")
- public String r5(String[] arr){
- return "接收参数:arr="+ Arrays.toString(arr);
- }
- }
复制代码 通过postman进行观察:
五、聚集(Collections)
通报一组对象或复杂数据类型。
1. 通过 @RequestBody 通报聚集
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- //传递集合
- @RequestMapping("r6")
- public String r6(@RequestParam List<Integer> list){
- return "接收参数:List="+ list;
- }
- }
复制代码 postman 传参测试:
六、JOSN
1.JSON概念
JSON:JavaScript Object Notation 【JavaScript 对象表示法】
JSON是⼀种轻量级的数据交互格式. 它基于 ECMAScript (欧洲盘算机协会制定的js规范)的⼀个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简单来说:JSON就是⼀种数据格式, 有本身的格式和语法, 使用文本表示⼀个对象或数组的信息, 因此JSON本质是字符串. 重要负责在差别的语言中数据通报和互换
类似于:
• 国际通用语言-英语
• 中国56个民族差别地域的通用语言-平常话
有本身的语法, 其他语言也熟悉。
2.JSON语法
JSON 是⼀个字符串,其格式非常类似于 JavaScript 对象字面量的格式。
我们先来看⼀段JSON数据:
- {
- "name": "John",
- "age": 30,
- "city": "New York"
- }
复制代码 也可以压缩表示:
- {"name": "John","age": 30,"city": "New York"}
复制代码 语法
- 数据在 键值对(Key/Value) 中
- 数据由逗号 , 分隔
- 对象用 {} 表示
- 数组用 [] 表示
- 值可以为对象, 也可以为数组, 数组中可以包罗多个对象
JSON的两种结构
- 对象: 大括号 {} 保存的对象是⼀个无序的 键值对 聚集. 一个对象以左括号 { 开始, 右括号 }竣事。每个"键"后跟⼀个冒号 : ,键值对使用逗号 , 分隔。
- 数组: 中括号 [] 保存的数组是值(value)的有序聚集. ⼀个数组以左中括号 [ 开始, 右中括号 ] 竣事。
以下都是合法的JOSN数据:
- {"name":"admin","age":18}
- ["hello", 3.1415, "json"]
- [{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]
- 1
复制代码 本质上是jackson-databind提供的功能, Spring MVC框架中已经把该工具包引入了进来, 咱们直接使用即可, 如果脱离Spring MVC使用, 必要引入相关依赖:
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.18.0</version>
- </dependency>
复制代码 3.通报JOSN对象
接收JSON对象, 必要使⽤ @RequestBody 注解
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- //传递Joson
- @RequestMapping("r7")
- public String r7(@RequestBody UserInfo userInfo){
- return userInfo.toString();
- }
- }
复制代码 通过postman测试:
不用@RequstBody注解看看:
七、文件哀求
1.获取文件
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- @RequestMapping("r10")
- public String r10(MultipartFile file){
- System.out.println(file.getOriginalFilename());
- return "获取文件成功!";
- }
- }
复制代码 通过postman测试:
2.上传文件
- @RequestMapping("/Requst")
- @RestController
- public class RequstController {
- @RequestMapping("r11")
- //@RequestPart("file1") 对file进行重命名为file1
- public String r11(@RequestPart("file1") MultipartFile file) throws IOException {
- System.out.println(file.getOriginalFilename());
- //文件上传
- file.transferTo(new File("D:\\temp\"+file.getOriginalFilename()));
- return "获取文件成功!";
- }
- }
复制代码 通过postman测试:
可以看到上传乐成了!!!
八、注意事项与最佳实践
- 参数校验:
- @PostMapping("/users")
- public User createUser(@RequestBody @Valid User user) {
- return userService.createUser(user);
- }
复制代码
- 参数命名:
- 办理常见标题:
- 避免通过 GET 哀求通报敏感数据。
- 使用 POST 或 PUT 哀求通报大数据或敏感信息。
九、总结
通过本文,你已经把握了如何在 Spring MVC 中通报各种类型的参数,包括简单类型、对象、数组、聚集、JSON 数据等。公道运用这些参数通报方式,可以开发出功能强大且易于维护的 Web 应用。
希望这篇详解能够资助你更好地理解 Spring MVC 的哀求处理机制,提升你的开发技能!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |