从简单类型到JSON:Spring MVC参数通报技巧大揭秘!!! ...

打印 上一主题 下一主题

主题 1374|帖子 1374|积分 4122

Spring MVC 参数通报详解:从基础到实战

在 Spring MVC 中,参数通报是前后端交互的关键环节。通过把握差别类型的参数通报方式,开发者可以更高效地构建功能美满的 Web 应用。本文将详细介绍 Spring MVC 中的参数通报方法,包括查询参数、路径变量、哀求体、数组、聚集以及 JSON 数据的互换。

一、查询参数(Query Parameters)

查询参数通过 URL 的查询字符串通报,通常用于 GET 哀求。
1. 通过postman通报单个参数

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4.     @RequestMapping("r1")
  5.     public String r1(String keyword){
  6.         return "接收参数"+keyword;
  7.     }
  8. }
复制代码



2.通过postman通报多个参数

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4. @RequestMapping("r2")
  5.     public String r2(String Username,String password){
  6.         return "用户名Username:"+Username+"密码password:"+password;
  7.     }
  8. }
复制代码
通过postman通报多个参数。

3. 通过 @RequestParam 进行重命名

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4. @RequestMapping("r4")
  5.     public String r4(@RequestParam(value = "q",required = false) String keyword){
  6.         return "接收参数:"+keyword;
  7.     }
  8. }
复制代码
通过postman观察:

4.可选参数

   required 的默认值为true, 表⽰寄义就是: 该注解修饰的参数默认为必传
既然云云, 我们可以通过设置 @RequestParam 中的 required=false 来避免不通报时报错.
  1. @GetMapping("/users")
  2. public List<User> getUsers(@RequestParam(name = "age", required = false) int age) {
  3.     return userService.getUsers(age);
  4. }
复制代码

二、路径参数(Path Variables)

路径参数将参数嵌入到 URL 路径中,实用于资源标识。
1. 通过 @PathVariable 接收参数

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4. //从url当中获取参数
  5.     @RequestMapping("/artic/{type}/{articID}")//必传参数
  6.     public  String r8(@PathVariable String type,@PathVariable Integer articID){
  7.             return "文章类型:"+type+"获取文章ID:"+articID;
  8.     }
  9. }
复制代码
通过postman测试:


如果不传这个参数通过postman测试:

得到验证:可以看到这个参数是必须传的。


2. 参数重命名

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4. //从url当中获取参数(对articID重命名)
  5.    @RequestMapping("/artic/{type}/{articID}")//必传参数
  6.     public  String r9(@PathVariable String type,@PathVariable("articID") Integer articalID){
  7.         return "文章类型:"+type+"获取文章ID:"+articalID;
  8.     }
  9. }
复制代码

三、对象

通报对象

先创建一个类UserInfo:
  1. import lombok.Data;
  2. @Data
  3. public class UserInfo {
  4.     private String name;
  5.     private String gender;
  6.     private Integer age;
  7. }
复制代码
引入lombok依赖:
  1. <dependency>
  2.                         <groupId>org.projectlombok</groupId>
  3.                         <artifactId>lombok</artifactId>
  4.                         <version>1.18.30</version>
  5.                 </dependency>
复制代码
解释: 引入lombok依赖,然后通过@Data注解,可以主动生成构造方法等等。
  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4. @RequestMapping("r3")
  5.     public String r3(UserInfo userInfo){
  6.         return "UserInfo="+userInfo.toString();
  7.     }
  8. }
复制代码

通过postman进行通报对象的参数:


四、数组(Arrays)

用于通报一组相同类型的数据。
1. 通报数组

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4.   //传递数组
  5.     @RequestMapping("r5")
  6.     public String r5(String[] arr){
  7.         return "接收参数:arr="+ Arrays.toString(arr);
  8.     }
  9. }
复制代码
通过postman进行观察:


五、聚集(Collections)

通报一组对象或复杂数据类型。
1. 通过 @RequestBody 通报聚集

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4. //传递集合
  5.     @RequestMapping("r6")
  6.     public String r6(@RequestParam List<Integer> list){
  7.         return "接收参数:List="+ list;
  8.     }
  9. }
复制代码
postman 传参测试

六、JOSN

1.JSON概念

JSON:JavaScript Object Notation 【JavaScript 对象表示法】
JSON是⼀种轻量级的数据交互格式. 它基于 ECMAScript (欧洲盘算机协会制定的js规范)的⼀个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
   简单来说:JSON就是⼀种数据格式, 有本身的格式和语法, 使用文本表示⼀个对象或数组的信息, 因此JSON本质是字符串. 重要负责在差别的语言中数据通报和互换
  
类似于:
• 国际通用语言-英语
• 中国56个民族差别地域的通用语言-平常话
有本身的语法, 其他语言也熟悉。

2.JSON语法

   JSON 是⼀个字符串,其格式非常类似于 JavaScript 对象字面量的格式。
  我们先来看⼀段JSON数据:
  1. {
  2.   "name": "John",
  3.   "age": 30,
  4.   "city": "New York"
  5. }
复制代码
也可以压缩表示:
  1. {"name": "John","age": 30,"city": "New York"}
复制代码
语法

  • 数据在 键值对(Key/Value) 中
  • 数据由逗号 , 分隔
  • 对象用 {} 表示
  • 数组用 [] 表示
  • 值可以为对象, 也可以为数组, 数组中可以包罗多个对象
    JSON的两种结构
  • 对象: 大括号 {} 保存的对象是⼀个无序的 键值对 聚集. 一个对象以左括号 { 开始, 右括号 }竣事。每个"键"后跟⼀个冒号 : ,键值对使用逗号 , 分隔。
  • 数组: 中括号 [] 保存的数组是值(value)的有序聚集. ⼀个数组以左中括号 [ 开始, 右中括号 ] 竣事。
   以下都是合法的JOSN数据:
  1. {"name":"admin","age":18}
  2. ["hello", 3.1415, "json"]
  3. [{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]
  4. 1
复制代码
本质上是jackson-databind提供的功能, Spring MVC框架中已经把该工具包引入了进来, 咱们直接使用即可, 如果脱离Spring MVC使用, 必要引入相关依赖:
  1. <dependency>
  2.     <groupId>com.fasterxml.jackson.core</groupId>
  3.     <artifactId>jackson-databind</artifactId>
  4.     <version>2.18.0</version>
  5. </dependency>
复制代码

3.通报JOSN对象

   接收JSON对象, 必要使⽤ @RequestBody 注解
  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4.   //传递Joson
  5.     @RequestMapping("r7")
  6.     public String r7(@RequestBody UserInfo userInfo){
  7.         return userInfo.toString();
  8.     }
  9. }
复制代码
通过postman测试:


不用@RequstBody注解看看:


七、文件哀求

1.获取文件

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4.   @RequestMapping("r10")
  5.     public String r10(MultipartFile file){
  6.         System.out.println(file.getOriginalFilename());
  7.         return "获取文件成功!";
  8.     }
  9. }
复制代码
通过postman测试:

2.上传文件

  1. @RequestMapping("/Requst")
  2. @RestController
  3. public class RequstController {
  4.     @RequestMapping("r11")
  5.     //@RequestPart("file1") 对file进行重命名为file1
  6.     public String r11(@RequestPart("file1") MultipartFile file) throws IOException {
  7.         System.out.println(file.getOriginalFilename());
  8.         //文件上传
  9.         file.transferTo(new File("D:\\temp\"+file.getOriginalFilename()));
  10.         return "获取文件成功!";
  11.     }
  12. }
复制代码
通过postman测试:


可以看到上传乐成了!!!

八、注意事项与最佳实践


  • 参数校验

    • 使用 @Valid 注解对参数进行校验。
    1. @PostMapping("/users")
    2. public User createUser(@RequestBody @Valid User user) {
    3.     return userService.createUser(user);
    4. }
    复制代码

  • 参数命名

    • 保持前后端参数名称同等,减少重命名的复杂性。

  • 办理常见标题

    • 避免通过 GET 哀求通报敏感数据。
    • 使用 POST 或 PUT 哀求通报大数据或敏感信息。


九、总结

通过本文,你已经把握了如何在 Spring MVC 中通报各种类型的参数,包括简单类型、对象、数组、聚集、JSON 数据等。公道运用这些参数通报方式,可以开发出功能强大且易于维护的 Web 应用。
希望这篇详解能够资助你更好地理解 Spring MVC 的哀求处理机制,提升你的开发技能!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表