栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【SpringMVC应用篇】SpringMVC请求参数处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【SpringMVC应用篇】SpringMVC请求参数处理

【SpringMVC应用篇】SpringMVC请求参数处理
  • get和post请求的差异
  • 基本数据类型传参 (8种基本数据类型)
  • 引用数据类型传参 (数组,String)
  • 复杂对象参数
    • 前端传参List:
    • 前端传参Map:

前端向后台传递参数主要分两类:Get方式的URL路径传参和Post方式的Body请求体传参

1、URL传参数:/getParam?age=1&username="封于修"
2、Post方式的Body请求体传参: contextType = “application/x-www-form-urlencoded” contextType = “application/json”

get和post请求的差异

@GetMapping注解标记的Handle,SpringMVC参数处理只能解析Get请求中的key=value对,无法解析请求体body区域的application/x-www-form-urlencoded和application/json格式的数据

@PostMapping注解标记的Handle,能解析Get请求中的key=value对和解析请求体body区域的application/x-www-form-urlencoded(from表单提交的数据 key1=val1&key2=val2 )格式数据,如果两者都存在参数相同的数据,则都解析。
测试代码:controller

接口测试:

响应结果:

如果需要支持解析application/json格式的数据,需要使用注解@RequestBody的支持,告诉SpringMVC使用RequestResponseBodyMethodProcessor处理器解析器解析

基本数据类型传参 (8种基本数据类型)

前端传参:

/getParam?a1=1&a2=2&a3=3&a4=4&a5=5&a6=6&a7=0&a8=a

后端接收入参:

@GetMapping("/getParam")
public R testGetParam(byte a1, short a2, int a3, long a4,
                      double a5, float a6,
                      boolean a7,
                      char a8) {
    System.out.println("a1: "+ a1);
    System.out.println("a2: "+ a2);
    System.out.println("a3: "+ a3);
    System.out.println("a4: "+ a4);
    System.out.println("a5: "+ a5);
    System.out.println("a6: "+ a6);
    System.out.println("a7: "+ a7);
    System.out.println("a8: "+ a8);
    return success(null);
}

建议都使用对应的包装类型,前端未传入的值包装类型默认为null。基本数据类型前端未传入值,后端报错

引用数据类型传参 (数组,String)

前端传参:

url参数: /postParam?age=1,2,3
请求体参数: body = “username=步惊云,风雨”

后端接收入参:

@PostMapping("/postParam")
public R testPostParam(Integer[] age, String[] username) {
    System.out.println("age: "+ Arrays.toString(age));
    System.out.println(Arrays.toString(username));
    return success(null);
}
复杂对象参数

@RequestParam和@RequestBody的区别

1、@RequestParam可以取get方式的url路径参数和post方式的body类型为contextType = "application/x-www-form-urlencoded"的参数

2、@RequestBody只能取post方式的body类型为contextType = "application/json"的参数

3、 @RequestBody 无法直接解析基本数据类和对应的包装类型,能解析对象类型: String、JavaBean、List、Set、Map

前端传参List:


后端接收入参:

@PostMapping("/postJsonListParam")
public R postJsonListParam(@RequestBody List map) {
    return success(map);
}
前端传参Map:


后端接收入参:

@PostMapping("/postJsonMapParam")
public R postJsonMapParam(@RequestBody Map map) {
   return success(map);
}

项目开发建议使用(@RequestBody 实体)接收,偷懒的情况可以使用(@RequestBody Map),Map接收一切对象,解决任何复杂对象的接收

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025065.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号