最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot請求參數(shù)傳遞與接收說明小結(jié)

 更新時間:2022年12月19日 16:35:13   作者:看客過客皆是客  
這篇文章主要介紹了SpringBoot請求參數(shù)傳遞與接收,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、GET請求和POST請求的區(qū)別是什么

GET和POST請求的區(qū)別主要有下面幾點

  • GET沒有請求體,POST有請求體
  • GET傳輸比POST快
  • GET只能攜帶少量數(shù)據(jù)(因為其請求url有長度限制),POST可以攜帶的數(shù)據(jù)量較大
  • POST因為將數(shù)據(jù)放在請求體中,GET將數(shù)據(jù)拼接到url中,所以POST比GET要安全

二、不同類型參數(shù)傳遞方法

GET請求沒有請求體,所以在發(fā)送GET請求時,都是進(jìn)行請求URL的拼接。而POST請求攜帶有請求體,所以在請求時,不僅僅可以拼接URL,還可以在請求體中放入數(shù)據(jù)。

1、單個基本數(shù)據(jù)類型參數(shù)傳遞

單個基本類型數(shù)據(jù)傳遞時,后端往往只需要在接收方法中定義相應(yīng)數(shù)據(jù)類型的數(shù)據(jù),就可以直接接收。

1)GET請求

無注解

    @GetMapping(path = "/em")
    public Result demo1(String person) {
        System.out.println(person);
        return Result.success("OK!");
    }

@RequestParam

獲取查詢參數(shù)。即url?name=這種形式

    @GetMapping("/de/{name}")
    public Result demo1( @RequestParam(name = "name") String name) {
        System.out.println("name="+name);
        return Result.success("OK!");
    }

@PathVariable

獲取路徑參數(shù)。即url/{id}這種形式。

@GetMapping("/ded/{id}")
    public Result demo(@PathVariable(name = "id") String id) {
        System.out.println("id="+id);
        return Result.success("OK!");
    }

2)POST請求

    @PostMapping(path = "/emo")
    public Result demo2(String person) {
        System.out.println(person);
        return Result.success("OK!");
    }

2、多個參數(shù)傳遞

1)多個變量接收

(1)get

    @GetMapping("/de")
    public Result demo11(String id, String name) {
        System.out.println("id="+id);
        System.out.println("name="+name);
        return Result.success("OK!");
    }

(2)post

    @PostMapping("/de")
    public Result demo11(String id, String name) {
        System.out.println("id="+id);
        System.out.println("name="+name);
        return Result.success("OK!");
    }

當(dāng)使用這種方法接收的時候,需要保證前端傳遞的參數(shù)名與后端方法中定義的變量名保持完全一致,或者使用@RequestParam(“前端傳遞的參數(shù)名”)注解指定變量的對應(yīng)關(guān)系。

通過以上兩種情況,我們可以得出結(jié)論,在以字符串拼接方式發(fā)送請求時,GET和POST請求的接收方式是完全一樣的。所以下面我們只針對于GET的方式與POST以請求體的方式傳遞時的接收方法進(jìn)行介紹。

    @GetMapping("/de/{idd}")
    public void demo11(@PathVariable(name = "idd") String idd, @RequestParam(name = "name") String name) {
        System.out.println("id="+idd);
        System.out.println("name="+name);
    }

2)實體類接收

 如果后臺有一個實體類,滿足:

  • 傳遞的參數(shù)集合為實體類屬性的子集(實體類包含了前端傳遞的所有參數(shù),可以比前端傳遞的參數(shù)多,不可少);
  • 實體類中參數(shù)必須有g(shù)etter/setter方法。

那就可以在后端用該實體類進(jìn)行接收。

get請求只需要在后端方法中添加該實體類進(jìn)行接收即可。

    @GetMapping("/demo1")
    public Result demo(LoginDto loginDto) {
        System.out.println(loginDto.toString());
        return Result.success("OK!");
    }

post請求是將數(shù)據(jù)放入請求體中,將數(shù)據(jù)封裝成一個json對象進(jìn)行傳遞,此時如果單純的使用Student對象接收是不可以的

.@RequestBody,加上這個注解后,Springmvc會從請求體中獲取數(shù)據(jù)并進(jìn)行相應(yīng)的轉(zhuǎn)換,否則為null

    @PostMapping("/demo2")
    public Result demo(@RequestBody LoginDto loginDto) {
        System.out.println(loginDto.toString());
        return Result.success("OK!");
    }

3)Map接收

當(dāng)我們沒有對應(yīng)的實體類可以用來接收前端傳遞過來的多個數(shù)據(jù)時,Map類無疑成為了最方便的一個類。其數(shù)據(jù)結(jié)構(gòu)與JSON的極為相似也注定了Map作為SpringBoot數(shù)據(jù)傳遞中不可或缺的地位。

GET請求

當(dāng)我們使用實體類LoginDto時,里面的成員變量已經(jīng)確定為username和password,springmvc只需要根據(jù)名稱調(diào)用setter方法進(jìn)行數(shù)據(jù)填充即可,但是作為一個Map,它里面的參數(shù)名和數(shù)據(jù)沒有任何定義,所以springmvc不會將數(shù)據(jù)進(jìn)行填充,導(dǎo)致了接收的Map為0的結(jié)果。

解決方法當(dāng)然是有的,我們需要借助另外一個注解:@RequestParam,注意這個注解使用時,不需要指定name等屬性,直接使用該注解即可,加上之后,就可以接收了。

    @GetMapping("/demo1")
    public Result demo(@RequestParam Map loginDto) {
        System.out.println(loginDto.toString());
        return Result.success("OK!");
    }

POST請求

    @PostMapping("/demo2")
    public Result demo1(@RequestBody Map<String, String> loginDto) {
        System.out.println(loginDto.toString());
        return Result.success("OK!");
    }

3、數(shù)組

(1)GET請求

    @GetMapping("/demo1")
    public Result demo(@RequestParam List<String> name) {
        System.out.println(name);
        return Result.success("OK!");
    }

這個方法確實可以實現(xiàn)數(shù)組的接收。這里需要注意的是:

  • @RequestParam注解是必須的,且方法中的變量名要與URL中的參數(shù)名相同,不同的話也可以通過@RequestParam里面的name進(jìn)行設(shè)置
  • 這里使用的是List對象接收,其實使用String[]也是可以接收的

(2)POST請求

@PostMapping("/demo2")
    public Result demo1(@RequestBody List<String> name) {
        System.out.println(name);
        return Result.success("OK!");
    }

4、請求頭參數(shù)以及Cookie

@GetMapping("/demo3")
public void demo3(@RequestHeader(name = "myHeader") String myHeader,
                  @CookieValue(name = "myCookie") String myCookie) {
    System.out.println("myHeader=" + myHeader);
    System.out.println("myCookie=" + myCookie);
}
或
@GetMapping("/demo3")
    public void demo3(HttpServletRequest request) {
        System.out.println(request.getHeader("myHeader"));
        for (Cookie cookie : request.getCookies()) {
            if ("myCookie".equals(cookie.getName())) {
                System.out.println(cookie.getValue());
            }
        }
    }

到此這篇關(guān)于SpringBoot請求參數(shù)傳遞與接收說明小結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot請求參數(shù)傳遞與接收內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java里的static在Kotlin里如何實現(xiàn)

    Java里的static在Kotlin里如何實現(xiàn)

    這篇文章主要介紹了Java里的static在Kotlin里如何實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • java設(shè)計模式--七大原則詳解

    java設(shè)計模式--七大原則詳解

    本篇文章主要對Java中的設(shè)計模式如,創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式以及7大原則進(jìn)行了歸納整理,需要的朋友可以參考下,希望能給你帶來幫助
    2021-07-07
  • Springboot @Transactional使用時需注意的幾個問題記錄

    Springboot @Transactional使用時需注意的幾個問題記錄

    本文詳細(xì)介紹了Spring Boot中使用`@Transactional`注解進(jìn)行事務(wù)管理的多個方面,包括事務(wù)的隔離級別(如REPEATABLE_READ)和傳播行為(如REQUIRES_NEW),并指出了在同一個類中調(diào)用事務(wù)方法時可能遇到的問題以及解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • SpringBoot之LogBack配置詳解

    SpringBoot之LogBack配置詳解

    這篇文章主要介紹了SpringBoot之LogBack配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • java中使用sax解析xml的解決方法

    java中使用sax解析xml的解決方法

    本篇文章介紹了,在java中使用sax解析xml的解決方法。需要的朋友參考下
    2013-05-05
  • spring boot security自定義認(rèn)證的代碼示例

    spring boot security自定義認(rèn)證的代碼示例

    這篇文章主要介紹了spring boot security自定義認(rèn)證,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot?+?Disruptor實現(xiàn)特快高并發(fā)處理及使用Disruptor高速實現(xiàn)隊列的過程

    SpringBoot?+?Disruptor實現(xiàn)特快高并發(fā)處理及使用Disruptor高速實現(xiàn)隊列的過程

    Disruptor是一個開源的Java框架,它被設(shè)計用于在生產(chǎn)者—消費者(producer-consumer problem,簡稱PCP)問題上獲得盡量高的吞吐量(TPS)和盡量低的延遲,這篇文章主要介紹了SpringBoot?+?Disruptor?實現(xiàn)特快高并發(fā)處理,使用Disruptor高速實現(xiàn)隊列,需要的朋友可以參考下
    2023-11-11
  • 如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率

    如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率

    這篇文章主要介紹了如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Spring Cloud  Hystrix實現(xiàn)服務(wù)容錯的方法

    Spring Cloud  Hystrix實現(xiàn)服務(wù)容錯的方法

    Hystrix是SpringCloud中重要的熔斷保護(hù)組件,由Netflix開源,主要提供延遲和容錯管理,以保障分布式系統(tǒng)的高可用性和魯棒性,通過封裝依賴項實現(xiàn)服務(wù)間隔離,引入回退邏輯應(yīng)對依賴服務(wù)故障,有效防止系統(tǒng)崩潰和服務(wù)級聯(lián)故障
    2024-10-10
  • RestTemplate在Spring或非Spring環(huán)境下使用精講

    RestTemplate在Spring或非Spring環(huán)境下使用精講

    這篇文章主要為大家介紹了RestTemplate在Spring或非Spring環(huán)境下使用精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03

最新評論

沂南县| 泰州市| 宁波市| 康保县| 长沙县| 安宁市| 鄢陵县| 乐东| 麻阳| 胶州市| 新津县| 尤溪县| 湛江市| 左贡县| 平潭县| 临高县| 绥棱县| 大渡口区| 乐都县| 瑞丽市| 中山市| 虹口区| 南召县| 怀安县| 泾川县| 开远市| 土默特左旗| 虞城县| 白城市| 图木舒克市| 建阳市| 宝兴县| 武鸣县| 明溪县| 额尔古纳市| 固阳县| 天全县| 曲阳县| 东阿县| 革吉县| 新乐市|