@PathVariable、@RequestParam和@RequestBody的區(qū)別
1. @PathVariable
@RequestMapping(value="/{id}")
public String getId(@PathVariable(value="id") String id) {
return id;
}1.1 @PathVariable 映射 URL 綁定的占位符
- 帶占位符的 URL 是 Spring3.0 新增的功能
- 通過 @PathVariable 可以將 URL 中占位符參數(shù)綁定到控制器(controller)處理方法的形參中,URL 中的 {xx} 占位符可以通過@PathVariable(“xx“) 綁定到操作方法的形參中
- 是根據(jù)請求方法進(jìn)行類的區(qū)別
1.2 @PathVariable的參數(shù)
- String value:可指定占位符 { } 中的參數(shù)名,若只指定value這一個屬性可省略屬性名不寫,若占位符中的參數(shù)名和處理方法中的參數(shù)名相同可省略此屬性。
- String name:和value一樣,兩個屬性指定其一即可。
- boolean required:是否必需,默認(rèn)為 true,即 請求中必須包含該參數(shù),如果沒有包含,將會拋出異常
2. @RequestParam
@RequestMapping(value="/user")
public String getName(@RequestParam(value="name") String name) {
return name;
}在SpringMVC框架中,獲取URL中的參數(shù),也就是?key1=value1&key2=value2這樣的參數(shù)列表。通過注解@RequestParam將URL中的參數(shù)綁定到處理函數(shù)方法的變量中。
2.1 @RequestParam 用于將指定的請求參數(shù)賦值給方法中的形參
- 如果參數(shù)前寫了@RequestParam(x),那么前端必須有對應(yīng)的x名字才行(不管其是否有值),如果沒有x名的話,那么請求會出錯。
- 如果參數(shù)前不寫@RequestParam(x),那么就前端可以有可以沒有對應(yīng)的x名字才行,如果有x名的話,那么就會自動匹配;沒有的話,請求也能正確發(fā)送。
2.2 @RequestParam的參數(shù)
- String value:請求中傳入?yún)?shù)的名稱,如果不設(shè)置value值,則會默認(rèn)為該變量名。
- String name:和value一樣,兩個屬性指定其一即可。
- boolean required:是否必需,默認(rèn)為 true,即 請求中必須包含該參數(shù),如果沒有包含,將會拋出異常
- String defaultValue:參數(shù)的默認(rèn)值,如果請求中沒有同名的參數(shù)時,該變量默認(rèn)為此值。
3. @RequestBody
@PostMapping("/editUser")
public void edit(@RequestBody User user){
System.out.println(user);
}@RequestBody主要用來接收前端傳遞給后端的json字符串中的數(shù)據(jù)的(請求體中的數(shù)據(jù)的);使用@RequestBody接收數(shù)據(jù)時,是用POST等方式進(jìn)行提交。
- 后端@RequestBody注解對應(yīng)的類,會根據(jù)json字符串中的key來匹配對應(yīng)實體類的屬性,如果匹配一致且json中的該key對應(yīng)的值符合實體類的對應(yīng)屬性的類型要求時,會調(diào)用實體類的setter方法將值賦給該屬性。
- json字符串中,如果value為"“的話,后端對應(yīng)屬性如果是String類型的,那么接受到的就是”",如果是后端屬性的類型是Integer、Double等類型,那么接收到的就是null。
- json字符串中,如果value為null的話,后端對應(yīng)收到的就是null。
- 如果某個參數(shù)沒有value的話,在傳json字符串給后端時,要么干脆就不把該字段寫到j(luò)son字符串中;要么寫value時, 必須有值,null 或""都行。
到此這篇關(guān)于@PathVariable、@RequestParam和@RequestBody的區(qū)別和使用的文章就介紹到這了,更多相關(guān)@PathVariable @RequestParam @RequestBody內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot中@RequestParam和@PathVariable區(qū)別
- SpringBoot中@PathVariable、@RequestParam和@RequestBody的區(qū)別和使用詳解
- Spring中@PathVariable和@RequestParam注解的用法區(qū)別
- Spring中@RequestParam、@RequestBody和@PathVariable的用法詳解
- Springboot中@RequestParam和@PathVariable的用法與區(qū)別詳解
- 方法參數(shù)屬性params,@PathVariable和@RequestParam用法及區(qū)別
- @PathVariable和@RequestParam傳參為空問題及解決
- 使用@pathvariable與@requestparam碰到的一些問題及解決
- 聊聊@RequestParam,@PathParam,@PathVariable等注解的區(qū)別
- Java中@PathVariable 和 @RequestParam的區(qū)別小結(jié)
相關(guān)文章
SpringBoot結(jié)合ElasticSearch實現(xiàn)模糊查詢的項目實踐
本文主要介紹了SpringBoot結(jié)合ElasticSearch實現(xiàn)模糊查詢的項目實踐,主要實現(xiàn)模糊查詢、批量CRUD、排序、分頁和高亮功能,具有一定的參考價值,感興趣的可以了解一下2024-03-03
關(guān)于ThreadLocal和InheritableThreadLocal解析
這篇文章主要介紹了關(guān)于ThreadLocal和InheritableThreadLocal解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
ThreadPoolExecutor核心線程數(shù)和RocketMQ消費線程調(diào)整詳解
這篇文章主要介紹了ThreadPoolExecutor核心線程數(shù)和RocketMQ消費線程調(diào)整詳解,Rocketmq 消費者在高峰期希望手動減少消費線程數(shù),通過DefaultMQPushConsumer.updateCorePoolSize方法可以調(diào)用內(nèi)部的setCorePoolSize設(shè)置多線程核心線程數(shù),需要的朋友可以參考下2023-10-10
spring?kafka?@KafkaListener詳解與使用過程
這篇文章主要介紹了spring-kafka?@KafkaListener詳解與使用,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02

