詳解Spring?Boot接收參數(shù)的19種方式
SpringBoot接受參數(shù)相關(guān)
@PathVariable注解
使用場(chǎng)景:解析占位變量
url:/monster/{id}/{name} —> /monster/king/100
與@RequestParam的區(qū)別是沒(méi)有參數(shù)名
/** * /monster/{id}/{name} 解讀 * 1. /monster/{id}/{name} 構(gòu)成完整請(qǐng)求路徑 * 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注解
使用場(chǎng)景:解析請(qǐng)求頭信息
/** * * 解讀: * 1.@RequestHeader獲取請(qǐng)求頭信息 * 2,@RequestHeader("Host") String host:獲取請(qǐng)求頭host的信息 * 2.1 @RequestHeader("Host"),@RequestHeader中的value值大小寫無(wú)差別 * 2.2 String host:名字程序員自定義 * 3.@RequestHeader Map<String,String> header:獲取到http請(qǐng)求頭的所有信息 * @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注解
使用場(chǎng)景:獲取請(qǐng)求參數(shù)信息
/** * * 內(nèi)容:@RequestParam:獲取請(qǐng)求參數(shù) * 解讀: * 1.@RequestParam(value = "name",required = true) String username * 1.1 @RequestParam(value = "name":獲取參數(shù)名為name的值 * 1.2 required = true,不允許不傳入該屬性的值,即可以不填寫該屬性會(huì)報(bào)錯(cuò) * required = false,即使沒(méi)有傳入該屬性,也不會(huì)報(bào)錯(cuò),值為null * 2.@RequestParam("fruit")List<String>fruits:當(dāng)一個(gè)屬性有多個(gè)值的時(shí)候用List數(shù)組接收 * 3.@RequestParam Map<String,String> paras:可以用Map集合接收所有數(shù)據(jù) * 注意:這樣寫有一個(gè)小問(wèn)題,當(dāng)一個(gè)值為數(shù)組類型(有多個(gè)數(shù)據(jù)的時(shí)候),只能接收第一個(gè)數(shù)據(jù) * 原因:因?yàn)镸ap的泛型為<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自動(dòng)封裝參數(shù)對(duì)象
/** * 將獲取到的數(shù)據(jù)封裝成對(duì)象 * 解讀: * 1.方法的形參用對(duì)應(yīng)的類型來(lái)指定即可,SpringMVC會(huì)自動(dòng)進(jìn)行封裝 * 2.如果是自動(dòng)完成封裝,則需要提交的數(shù)據(jù)-參數(shù)名與對(duì)象的字段名保持一致 * 3.如果屬性是對(duì)象,我們通過(guò)字段名.字段名的方式提交數(shù)據(jù) * 例如Master[pet],提交的數(shù)據(jù)名應(yīng)該是 pet.id,pet.name等等【級(jí)聯(lián)操作】 * 4.如果提交數(shù)據(jù)的參數(shù)名和對(duì)象的字段名不匹配,則對(duì)象的屬性值為null */ @RequestMapping("/vote03") public String getPojoObject(Master master){ System.out.println("master = " + master); return "success"; }
@RequestBody
使用場(chǎng)景:前端傳來(lái)的是json數(shù)據(jù)
/** * 1.@RequestBody User user在形參制定了@RequestBody注解 * 2.springmvc就會(huì)將交提交的json字符串?dāng)?shù)據(jù)轉(zhuǎn)換成指定的javabean * 3.注意:前后端的屬性值應(yīng)該匹配,否則會(huì)返回空 * 4.如果沒(méi)有@RequestBody修飾,該屬性的前后端的值都為空。 * @param user * @return */ @ResponseBody @RequestMapping("json/user") public User UserHandler(@RequestBody User user) { //接收前臺(tái)傳入的json數(shù)據(jù),并以json的格式傳回瀏覽器 System.out.println("user = " + user); return user; }
@CookieValue
使用場(chǎng)景:獲取cookie數(shù)據(jù)
/** * 內(nèi)容:獲取cookie數(shù)據(jù) * 解讀: * 1.配置環(huán)境:我們?cè)跒g覽器自己添加cookie,右鍵檢查,在存儲(chǔ)中添加(也可能在application) * 2.@CookieValue(value = "cookie_key",required = false) String cookie_value * 2.1 獲取名字為cookie_key的Cookie的value值 * 2.2 String cookie_value,如果注解修飾的類型為String,則獲取的是Cookie對(duì)應(yīng)的value值 * 3.@CookieValue(value = "username",required = false)Cookie userCookie) * 3.1 獲取名字為username的Cookie對(duì)象 * 3.2 Cookie userCookie,如果注解修飾的類型為Cookie,則獲取的是Cookie對(duì)象 * 4.required = false:參數(shù)是否必須傳入,同@RequestParam * 5.也可以通過(guò)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"; }
級(jí)聯(lián)操作
應(yīng)用場(chǎng)景:對(duì)象的屬性是另一個(gè)對(duì)象的實(shí)例
/** * 將獲取到的數(shù)據(jù)封裝成對(duì)象 * 解讀: * 1.方法的形參用對(duì)應(yīng)的類型來(lái)指定即可,SpringMVC會(huì)自動(dòng)進(jìn)行封裝 * 2.如果是自動(dòng)完成封裝,則需要提交的數(shù)據(jù)-參數(shù)名與對(duì)象的字段名保持一致 * 3.如果屬性是對(duì)象,我們通過(guò)字段名.字段名的方式提交數(shù)據(jù) * 例如Master[pet],提交的數(shù)據(jù)名應(yīng)該是 pet.id,pet.name等等【級(jí)聯(lián)操作】 * 4.如果提交數(shù)據(jù)的參數(shù)名和對(duì)象的字段名不匹配,則對(duì)象的屬性值為null */ @RequestMapping("/vote03") public String getPojoObject(Master master){ System.out.println("master = " + master); return "success"; }
到此這篇關(guān)于Spring Boot接收參數(shù)的19種方式的文章就介紹到這了,更多相關(guān)Spring Boot接收參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot3整合knife4j詳細(xì)圖文教程(swagger增強(qiáng))
開(kāi)發(fā)api提供對(duì)應(yīng)的接口規(guī)范進(jìn)行聯(lián)調(diào)或并行開(kāi)發(fā),api文檔管理必不可少,常用的Knife4j基于swagger(依賴已經(jīng)compile),可以進(jìn)行管理,下面這篇文章主要給大家介紹了關(guān)于springboot3整合knife4j的相關(guān)資料,需要的朋友可以參考下2024-03-03java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)
這篇文章主要為大家介紹了java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06SpringBoot使用Sa-Token實(shí)現(xiàn)賬號(hào)封禁、分類封禁、階梯封禁的示例代碼
本文主要介紹了SpringBoot使用Sa-Token實(shí)現(xiàn)賬號(hào)封禁、分類封禁、階梯封禁的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決
這篇文章主要介紹了springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解
這篇文章主要介紹了SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Java中從Integer到Date的轉(zhuǎn)換方法
這篇文章主要介紹了Java中integer怎么轉(zhuǎn)換date,在Java中,如果我們有一個(gè)Integer類型的數(shù)據(jù),想要將其轉(zhuǎn)換為Date類型,本文給大家介紹了實(shí)現(xiàn)方法,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-05-05SpringBoot的@EnableAsync和@Async注解分析
這篇文章主要介紹了SpringBoot的@EnableAsync和@Async注解分析,Spring Boot是一個(gè)快速開(kāi)發(fā)框架,可以幫助開(kāi)發(fā)人員快速構(gòu)建基于Spring的應(yīng)用程序,需要的朋友可以參考下2023-07-07解決程序包org.springframework.test.context不存在
這篇文章主要介紹了解決程序包org.springframework.test.context不存在的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09