@PathVariable、@RequestParam和@RequestBody的区别
作者:bai_student
本文主要介绍了@PathVariable、@RequestParam和@RequestBody的区别和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1. @PathVariable
@RequestMapping(value="/{id}") public String getId(@PathVariable(value="id") String id) { return id; }
1.1 @PathVariable 映射 URL 绑定的占位符
- 带占位符的 URL 是 Spring3.0 新增的功能
- 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器(controller)处理方法的形参中,URL 中的 {xx} 占位符可以通过@PathVariable(“xx“) 绑定到操作方法的形参中
- 是根据请求方法进行类的区别
1.2 @PathVariable的参数
- String value:可指定占位符 { } 中的参数名,若只指定value这一个属性可省略属性名不写,若占位符中的参数名和处理方法中的参数名相同可省略此属性。
- String name:和value一样,两个属性指定其一即可。
- boolean required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常
2. @RequestParam
@RequestMapping(value="/user") public String getName(@RequestParam(value="name") String name) { return name; }
在SpringMVC框架中,获取URL中的参数,也就是?key1=value1&key2=value2这样的参数列表。通过注解@RequestParam将URL中的参数绑定到处理函数方法的变量中。
2.1 @RequestParam 用于将指定的请求参数赋值给方法中的形参
- 如果参数前写了@RequestParam(x),那么前端必须有对应的x名字才行(不管其是否有值),如果没有x名的话,那么请求会出错。
- 如果参数前不写@RequestParam(x),那么就前端可以有可以没有对应的x名字才行,如果有x名的话,那么就会自动匹配;没有的话,请求也能正确发送。
2.2 @RequestParam的参数
- String value:请求中传入参数的名称,如果不设置value值,则会默认为该变量名。
- String name:和value一样,两个属性指定其一即可。
- boolean required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常
- String defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。
3. @RequestBody
@PostMapping("/editUser") public void edit(@RequestBody User user){ System.out.println(user); }
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);使用@RequestBody接收数据时,是用POST等方式进行提交。
- 后端@RequestBody注解对应的类,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。
- json字符串中,如果value为"“的话,后端对应属性如果是String类型的,那么接受到的就是”",如果是后端属性的类型是Integer、Double等类型,那么接收到的就是null。
- json字符串中,如果value为null的话,后端对应收到的就是null。
- 如果某个参数没有value的话,在传json字符串给后端时,要么干脆就不把该字段写到json字符串中;要么写value时, 必须有值,null 或""都行。
到此这篇关于@PathVariable、@RequestParam和@RequestBody的区别和使用的文章就介绍到这了,更多相关@PathVariable @RequestParam @RequestBody内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- @RequestParam注解加与不加有什么区别
- 基于params、@PathVariabl和@RequestParam的用法与区别说明
- 基于@RequestParam name和value属性的区别
- @RequestBody,@RequestParam和@Param的区别说明
- 方法参数属性params,@PathVariable和@RequestParam用法及区别
- @RequestParam 和@RequestBody注解的区别解析
- Springboot中@RequestParam和@PathVariable的用法与区别详解
- Spring中@PathVariable和@RequestParam注解的用法区别
- SpringBoot中@PathVariable、@RequestParam和@RequestBody的区别和使用详解
- @RequestAttribute和@RequestParam注解的区别及说明
- springMVC中@RequestParam和@RequestPart的区别