欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Spring?Boot接收參數(shù)的19種方式

 更新時(shí)間:2025年01月02日 12:03:32   作者:叁越  
Spring?Boot提供了多種注解來(lái)接收不同類型的參數(shù),本文給大家介紹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))

    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-03
  • java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)

    java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)

    這篇文章主要為大家介紹了java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • SpringBoot使用Sa-Token實(shí)現(xiàn)賬號(hào)封禁、分類封禁、階梯封禁的示例代碼

    SpringBoot使用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-07
  • java 中斷線程的幾種方式 interrupt()詳解

    java 中斷線程的幾種方式 interrupt()詳解

    中斷(Interrupt)一個(gè)線程意味著在該線程完成任務(wù)之前停止其正在進(jìn)行的一切,有效地中止其當(dāng)前的操作。這篇文章主要介紹了java 中斷線程的幾種方式 interrupt(),需要的朋友可以參考下
    2021-11-11
  • Java之Algorithm_analysis案例詳解

    Java之Algorithm_analysis案例詳解

    這篇文章主要介紹了Java之Algorithm_analysis案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決

    springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決

    這篇文章主要介紹了springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解

    SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解

    這篇文章主要介紹了SpringBoot 使用Mybatis分頁(yè)插件實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java中從Integer到Date的轉(zhuǎn)換方法

    Java中從Integer到Date的轉(zhuǎn)換方法

    這篇文章主要介紹了Java中integer怎么轉(zhuǎn)換date,在Java中,如果我們有一個(gè)Integer類型的數(shù)據(jù),想要將其轉(zhuǎn)換為Date類型,本文給大家介紹了實(shí)現(xiàn)方法,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • SpringBoot的@EnableAsync和@Async注解分析

    SpringBoot的@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不存在

    這篇文章主要介紹了解決程序包org.springframework.test.context不存在的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論