亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

GET和POST請(qǐng)求的區(qū)別主要有下面幾點(diǎn)

  • GET沒(méi)有請(qǐng)求體,POST有請(qǐng)求體
  • GET傳輸比POST快
  • GET只能攜帶少量數(shù)據(jù)(因?yàn)槠湔?qǐng)求url有長(zhǎng)度限制),POST可以攜帶的數(shù)據(jù)量較大
  • POST因?yàn)閷?shù)據(jù)放在請(qǐng)求體中,GET將數(shù)據(jù)拼接到url中,所以POST比GET要安全

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

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

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

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

1)GET請(qǐng)求

無(wú)注解

    @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請(qǐng)求

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

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

1)多個(gè)變量接收

(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í)候,需要保證前端傳遞的參數(shù)名與后端方法中定義的變量名保持完全一致,或者使用@RequestParam(“前端傳遞的參數(shù)名”)注解指定變量的對(duì)應(yīng)關(guān)系。

通過(guò)以上兩種情況,我們可以得出結(jié)論,在以字符串拼接方式發(fā)送請(qǐng)求時(shí),GET和POST請(qǐng)求的接收方式是完全一樣的。所以下面我們只針對(duì)于GET的方式與POST以請(qǐng)求體的方式傳遞時(shí)的接收方法進(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í)體類接收

 如果后臺(tái)有一個(gè)實(shí)體類,滿足:

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

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

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

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

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

.@RequestBody,加上這個(gè)注解后,Springmvc會(huì)從請(qǐng)求體中獲取數(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)我們沒(méi)有對(duì)應(yīng)的實(shí)體類可以用來(lái)接收前端傳遞過(guò)來(lái)的多個(gè)數(shù)據(jù)時(shí),Map類無(wú)疑成為了最方便的一個(gè)類。其數(shù)據(jù)結(jié)構(gòu)與JSON的極為相似也注定了Map作為SpringBoot數(shù)據(jù)傳遞中不可或缺的地位。

GET請(qǐng)求

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

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

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

POST請(qǐng)求

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

3、數(shù)組

(1)GET請(qǐng)求

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

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

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

(2)POST請(qǐng)求

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

4、請(qǐng)求頭參數(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請(qǐng)求參數(shù)傳遞與接收說(shuō)明小結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot請(qǐng)求參數(shù)傳遞與接收內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用反射獲取字段屬性

    Java使用反射獲取字段屬性

    這篇文章主要為大家詳細(xì)介紹了Java如何利用反射實(shí)現(xiàn)獲取字段屬性值,文中的示例代碼講解詳細(xì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助
    2023-06-06
  • Java+opencv3.2.0實(shí)現(xiàn)重映射

    Java+opencv3.2.0實(shí)現(xiàn)重映射

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0實(shí)現(xiàn)重映射的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 解決新版 Idea 中 SpringBoot 熱部署不生效的問(wèn)題

    解決新版 Idea 中 SpringBoot 熱部署不生效的問(wèn)題

    這篇文章主要介紹了解決新版 Idea 中 SpringBoot 熱部署不生效的問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Spring Boot實(shí)現(xiàn)STOMP協(xié)議的WebSocket的方法步驟

    Spring Boot實(shí)現(xiàn)STOMP協(xié)議的WebSocket的方法步驟

    這篇文章主要介紹了Spring Boot實(shí)現(xiàn)STOMP協(xié)議的WebSocket的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Spring AOP結(jié)合注解實(shí)現(xiàn)接口層操作日志記錄

    Spring AOP結(jié)合注解實(shí)現(xiàn)接口層操作日志記錄

    在項(xiàng)目開(kāi)發(fā)中我們需要記錄接口的操作日志:包含請(qǐng)求參數(shù)、響應(yīng)參數(shù)、接口所屬模塊、接口功能描述、請(qǐng)求地址、ip地址等信息;實(shí)現(xiàn)思路很簡(jiǎn)單就是基于注解和aop的方式去記錄日志,主要的難點(diǎn)在于日志表結(jié)構(gòu)、注解的設(shè)計(jì)已經(jīng)aop實(shí)現(xiàn)的一些比較好的實(shí)現(xiàn)方式的借鑒
    2022-08-08
  • Springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析

    Springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析

    這篇文章主要介紹了springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java中List與Map初始化的一些寫(xiě)法分享

    Java中List與Map初始化的一些寫(xiě)法分享

    這篇文章主要介紹了Java中List與Map初始化的一些寫(xiě)法有需要的朋友可以參考一下
    2014-01-01
  • Java多線程之線程安全問(wèn)題詳情

    Java多線程之線程安全問(wèn)題詳情

    這篇文章主要介紹了Java多線程之線程安全問(wèn)題詳情,線程安全問(wèn)題是指因多線程搶占式執(zhí)行而導(dǎo)致程序出現(xiàn)bug的問(wèn)題。內(nèi)容介紹詳細(xì)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • 淺談mybatis如何半自動(dòng)化解耦(推薦)

    淺談mybatis如何半自動(dòng)化解耦(推薦)

    這篇文章主要介紹了淺談mybatis如何半自動(dòng)化解耦,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Java設(shè)計(jì)模式之單例模式深入探索

    Java設(shè)計(jì)模式之單例模式深入探索

    單例模式(Singleton Pattern)是 Java 中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式,這種模式涉及到一個(gè)單一的類,該類負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建
    2021-10-10

最新評(píng)論