@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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- springboot中@RequestParam和@PathVariable区别
- SpringBoot中@PathVariable、@RequestParam和@RequestBody的区别和使用详解
- Spring中@PathVariable和@RequestParam注解的用法区别
- Spring中@RequestParam、@RequestBody和@PathVariable的用法详解
- Springboot中@RequestParam和@PathVariable的用法与区别详解
- 方法参数属性params,@PathVariable和@RequestParam用法及区别
- @PathVariable和@RequestParam传参为空问题及解决
- 使用@pathvariable与@requestparam碰到的一些问题及解决
- 聊聊@RequestParam,@PathParam,@PathVariable等注解的区别
- Java中@PathVariable 和 @RequestParam的区别小结
相关文章
SpringBoot结合ElasticSearch实现模糊查询的项目实践
本文主要介绍了SpringBoot结合ElasticSearch实现模糊查询的项目实践,主要实现模糊查询、批量CRUD、排序、分页和高亮功能,具有一定的参考价值,感兴趣的可以了解一下2024-03-03
关于ThreadLocal和InheritableThreadLocal解析
这篇文章主要介绍了关于ThreadLocal和InheritableThreadLocal解析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2025-03-03
ThreadPoolExecutor核心线程数和RocketMQ消费线程调整详解
这篇文章主要介绍了ThreadPoolExecutor核心线程数和RocketMQ消费线程调整详解,Rocketmq 消费者在高峰期希望手动减少消费线程数,通过DefaultMQPushConsumer.updateCorePoolSize方法可以调用内部的setCorePoolSize设置多线程核心线程数,需要的朋友可以参考下2023-10-10
spring kafka @KafkaListener详解与使用过程
这篇文章主要介绍了spring-kafka @KafkaListener详解与使用,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-02-02


最新评论