詳解Spring?Boot接收參數(shù)的19種方式
SpringBoot接受參數(shù)相關
@PathVariable注解
使用場景:解析占位變量
url:/monster/{id}/{name} —> /monster/king/100
與@RequestParam的區(qū)別是沒有參數(shù)名
/**
* /monster/{id}/{name} 解讀
* 1. /monster/{id}/{name} 構成完整請求路徑
* 2. {id} {name} 就是占位變量
* 3. @PathVariable("name"): 這里name 和{name} 命名保持一致,與注解內(nèi)的name一致
* 4. String name_ 這里自定義,老師故意這樣寫下
* 5. @PathVariable Map<String, String> map 把所有傳遞的值傳入map
* map = {name=king, id=100}
* 6. 可以看下@PathVariable源碼
*/
@GetMapping("/monster/{name}/{id}")
public String pathVariable(@PathVariable("name")String name_,
@PathVariable("id")Integer id, @PathVariable Map<String,String> map){
System.out.println("name = " + name);
System.out.println("id = " + id);
System.out.println("map = " + map);
return "success";
}@RequestHeader注解
使用場景:解析請求頭信息
/**
*
* 解讀:
* 1.@RequestHeader獲取請求頭信息
* 2,@RequestHeader("Host") String host:獲取請求頭host的信息
* 2.1 @RequestHeader("Host"),@RequestHeader中的value值大小寫無差別
* 2.2 String host:名字程序員自定義
* 3.@RequestHeader Map<String,String> header:獲取到http請求頭的所有信息
* @param host
* @param header
* @return
*/
@RequestMapping("/requestHeader")
public String requestHeader(@RequestHeader("Host") String host,
@RequestHeader Map<String,String> header){
System.out.println("host = " + host);
System.out.println("header = " + header);
return "success";
}@RequestParam注解
使用場景:獲取請求參數(shù)信息
/**
*
* 內(nèi)容:@RequestParam:獲取請求參數(shù)
* 解讀:
* 1.@RequestParam(value = "name",required = true) String username
* 1.1 @RequestParam(value = "name":獲取參數(shù)名為name的值
* 1.2 required = true,不允許不傳入該屬性的值,即可以不填寫該屬性會報錯
* required = false,即使沒有傳入該屬性,也不會報錯,值為null
* 2.@RequestParam("fruit")List<String>fruits:當一個屬性有多個值的時候用List數(shù)組接收
* 3.@RequestParam Map<String,String> paras:可以用Map集合接收所有數(shù)據(jù)
* 注意:這樣寫有一個小問題,當一個值為數(shù)組類型(有多個數(shù)據(jù)的時候),只能接收第一個數(shù)據(jù)
* 原因:因為Map的泛型為<String,String>,獲取的值是唯一的,不能接收數(shù)組或集合類型
* @param username
* @param fruits
* @return
*/
@RequestMapping("/requestParam")
public String requestParam(@RequestParam(value = "name",required = true) String username,
@RequestParam("fruit")List<String>fruits,
@RequestParam Map<String,String> paras){
System.out.println("username = " + username);
System.out.println("fruits = " + fruits);
System.out.println("paras = " + paras);
return "success";
}SpringMVC自動封裝參數(shù)對象
/**
* 將獲取到的數(shù)據(jù)封裝成對象
* 解讀:
* 1.方法的形參用對應的類型來指定即可,SpringMVC會自動進行封裝
* 2.如果是自動完成封裝,則需要提交的數(shù)據(jù)-參數(shù)名與對象的字段名保持一致
* 3.如果屬性是對象,我們通過字段名.字段名的方式提交數(shù)據(jù)
* 例如Master[pet],提交的數(shù)據(jù)名應該是 pet.id,pet.name等等【級聯(lián)操作】
* 4.如果提交數(shù)據(jù)的參數(shù)名和對象的字段名不匹配,則對象的屬性值為null
*/
@RequestMapping("/vote03")
public String getPojoObject(Master master){
System.out.println("master = " + master);
return "success";
}@RequestBody
使用場景:前端傳來的是json數(shù)據(jù)
/**
* 1.@RequestBody User user在形參制定了@RequestBody注解
* 2.springmvc就會將交提交的json字符串數(shù)據(jù)轉換成指定的javabean
* 3.注意:前后端的屬性值應該匹配,否則會返回空
* 4.如果沒有@RequestBody修飾,該屬性的前后端的值都為空。
* @param user
* @return
*/
@ResponseBody
@RequestMapping("json/user")
public User UserHandler(@RequestBody User user) {
//接收前臺傳入的json數(shù)據(jù),并以json的格式傳回瀏覽器
System.out.println("user = " + user);
return user;
}@CookieValue
使用場景:獲取cookie數(shù)據(jù)
/**
* 內(nèi)容:獲取cookie數(shù)據(jù)
* 解讀:
* 1.配置環(huán)境:我們在瀏覽器自己添加cookie,右鍵檢查,在存儲中添加(也可能在application)
* 2.@CookieValue(value = "cookie_key",required = false) String cookie_value
* 2.1 獲取名字為cookie_key的Cookie的value值
* 2.2 String cookie_value,如果注解修飾的類型為String,則獲取的是Cookie對應的value值
* 3.@CookieValue(value = "username",required = false)Cookie userCookie)
* 3.1 獲取名字為username的Cookie對象
* 3.2 Cookie userCookie,如果注解修飾的類型為Cookie,則獲取的是Cookie對象
* 4.required = false:參數(shù)是否必須傳入,同@RequestParam
* 5.也可以通過HttpServletRequest獲取cookie
* @param cookie_value
* @param userCookie
* @return
*/
@RequestMapping("/cookieValue")
public String cookieValue(@CookieValue(value = "cookie_key",required = false) String cookie_value,
@CookieValue(value = "username",required = false)Cookie userCookie,
HttpServletRequest request){
System.out.println("cookie_value = " + cookie_value);
System.out.println("userCookie = " + userCookie);
System.out.println("userCookie.getName() = " + userCookie.getName());
System.out.println("userCookie.getValue() = " + userCookie.getValue());
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
System.out.println("cookie = " + cookie);
}
return "success";
}級聯(lián)操作
應用場景:對象的屬性是另一個對象的實例
/**
* 將獲取到的數(shù)據(jù)封裝成對象
* 解讀:
* 1.方法的形參用對應的類型來指定即可,SpringMVC會自動進行封裝
* 2.如果是自動完成封裝,則需要提交的數(shù)據(jù)-參數(shù)名與對象的字段名保持一致
* 3.如果屬性是對象,我們通過字段名.字段名的方式提交數(shù)據(jù)
* 例如Master[pet],提交的數(shù)據(jù)名應該是 pet.id,pet.name等等【級聯(lián)操作】
* 4.如果提交數(shù)據(jù)的參數(shù)名和對象的字段名不匹配,則對象的屬性值為null
*/
@RequestMapping("/vote03")
public String getPojoObject(Master master){
System.out.println("master = " + master);
return "success";
}到此這篇關于Spring Boot接收參數(shù)的19種方式的文章就介紹到這了,更多相關Spring Boot接收參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot controller接收txt文本文件實現(xiàn)方式
文章介紹在Spring Boot Controller中接收文本文件的方法,需使用MultipartFile類并通過@RequestParam注解獲取,重點說明了獲取文件名、內(nèi)容及保存文件的常用方法,并強調(diào)MultipartFile為接口,需通過注解實例化2025-09-09
Springboot和Jpa實現(xiàn)學生CRUD操作代碼實例
這篇文章主要介紹了Springboot和Jpa實現(xiàn)學生CRUD操作代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
SpringMVC使用@ExceptionHandler注解在Controller中處理異常
這篇文章主要為大家介紹了SpringMVC使用@ExceptionHandler注解在Controller中處理異常示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
WeakHashMap?和?HashMap?區(qū)別及使用場景
這篇文章主要為大家介紹了WeakHashMap?和?HashMap?的區(qū)別是什么以及何時使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
Java中List類的contains和indexOf方法的使用及區(qū)別
這篇文章主要介紹了Java中List類的contains和indexOf方法的使用及區(qū)別,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2026-03-03

