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

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

 更新時間:2025年01月02日 12:03:32   作者:叁越  
Spring?Boot提供了多種注解來接收不同類型的參數(shù),本文給大家介紹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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot3整合knife4j詳細圖文教程(swagger增強)

    springboot3整合knife4j詳細圖文教程(swagger增強)

    開發(fā)api提供對應的接口規(guī)范進行聯(lián)調或并行開發(fā),api文檔管理必不可少,常用的Knife4j基于swagger(依賴已經(jīng)compile),可以進行管理,下面這篇文章主要給大家介紹了關于springboot3整合knife4j的相關資料,需要的朋友可以參考下
    2024-03-03
  • java題解Leetcode 8字符串轉換整數(shù)

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

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

    SpringBoot使用Sa-Token實現(xiàn)賬號封禁、分類封禁、階梯封禁的示例代碼

    本文主要介紹了SpringBoot使用Sa-Token實現(xiàn)賬號封禁、分類封禁、階梯封禁的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • java 中斷線程的幾種方式 interrupt()詳解

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

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

    Java之Algorithm_analysis案例詳解

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

    springboot新建項目pom.xml文件第一行報錯的解決

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

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

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

    Java中從Integer到Date的轉換方法

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

    SpringBoot的@EnableAsync和@Async注解分析

    這篇文章主要介紹了SpringBoot的@EnableAsync和@Async注解分析,Spring Boot是一個快速開發(fā)框架,可以幫助開發(fā)人員快速構建基于Spring的應用程序,需要的朋友可以參考下
    2023-07-07
  • 解決程序包org.springframework.test.context不存在

    解決程序包org.springframework.test.context不存在

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

最新評論