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

Spring中@RequestParam、@RequestBody和@PathVariable的用法詳解

 更新時(shí)間:2024年01月25日 10:13:34   作者:鑒泉~Richarlie  
這篇文章主要介紹了Spring中@RequestParam、@RequestBody和@PathVariable的用法詳解,后端使用集合來接受參數(shù),靈活性較好,如果url中沒有對(duì)參數(shù)賦key值,后端在接收時(shí),會(huì)根據(jù)參數(shù)值的類型附,賦一個(gè)初始key,需要的朋友可以參考下

@RequestParam

使用@RequestParam接收前段參數(shù)比較方便,前端傳參的URL:

url = “${ctx}/main/mm/am/edit?Id=${Id}&name=${name}”

后端使用集合來接受參數(shù),靈活性較好,如果url中沒有對(duì)參數(shù)賦key值,后端在接收時(shí),會(huì)根據(jù)參數(shù)值的類型附,賦一個(gè)初始key(String、long ……)

@RequestMapping("/edit")
    public String edit(Model model, @RequestParam Map<String, Object> paramMap ) {
        long id = Long.parseLong(paramMap.get("id").toString());
        String name = paramMap.get("name").toString;
        return page("edit");
    }

@PathVariable

使用@PathVariable接收參數(shù),參數(shù)值需要在url進(jìn)行占位,前端傳參的URL:

前臺(tái)實(shí)例:

url = “${ctx}/main/mm/am/edit/${Id}/${name}”

服務(wù)端接受:

	@RequestMapping("/edit/{id}/{name}")
    public String edit(Model model, @PathVariable long id,@PathVariable String name) {
    <span class="hljs-selector-tag">return</span> 
    <span class="hljs-selector-tag">page</span>(<span class="hljs-string">"edit"</span>);
}

前端傳參的URL于后端@RequestMapping的URL必須相同且參數(shù)位置一一對(duì)應(yīng),否則前端會(huì)找不到后端地址

@RequestParam使用

先介紹一下@RequestParam的使用場(chǎng)景:

注解@RequestParam接收的參數(shù)是來自requestHeader中,即請(qǐng)求頭。通常用于GET請(qǐng)求,比如常見的url://localhost:8081/spring-boot-study/novel/findByAuthorAndType?author=唐家三少&type=已完結(jié),其在Controller 層的寫法如下圖所示:

在這里插入圖片描述

@RequestParam有三個(gè)配置參數(shù):

  • required 表示是否必須,默認(rèn)為 true,必須。
  • defaultValue 可設(shè)置請(qǐng)求參數(shù)的默認(rèn)值。
  • value 為接收url的參數(shù)名(相當(dāng)于key值)。

@RequestParam用來處理 Content-Type 為 application/x-www-form-urlencoded 編碼的內(nèi)容,Content-Type默認(rèn)為該屬性。

@RequestParam也可用于其它類型的請(qǐng)求,例如:POST、DELETE等請(qǐng)求。比如向表中插入單條數(shù)據(jù),但是這樣不支持批量插入數(shù)據(jù)啊,如果改用 json 字符串來傳值的話,類型設(shè)置為 application/json,點(diǎn)擊發(fā)送的話,會(huì)報(bào)錯(cuò),后臺(tái)接收不到值,為 null

這時(shí)候,注解@RequestBody就派上用場(chǎng)了。

@RequestBody使用

先介紹一下@RequestBody的使用場(chǎng)景:

注解@RequestBody接收的參數(shù)是來自requestBody中,即請(qǐng)求體。

一般用于處理非 Content-Type: application/x-www-form-urlencoded編碼格式的數(shù)據(jù),比如:application/json、application/xml等類型的數(shù)據(jù)。

就application/json類型的數(shù)據(jù)而言,使用注解@RequestBody可以將body里面所有的json數(shù)據(jù)傳到后端,后端再進(jìn)行解析。

舉個(gè)批量插入數(shù)據(jù)的例子,Controller層的寫法如下圖所示:

在這里插入圖片描述

注意:前端使用$.ajax的話,一定要指定 contentType: "application/json;charset=utf-8;",默認(rèn)為 application/x-www-form-urlencoded。

@RequestBody注解一般主要是用來處理content-type:"application/json charset=utf-8"或者content-type:"application/xml charset=utf-8"兩種請(qǐng)求數(shù)據(jù),一般是異步請(qǐng)求用的比較多些,例如:

//異步請(qǐng)求部分代碼
$.ajax({
        url:"/hello",
        type:“POST”,
        data:'{“id”:“123”,“name”:“chenyc”}',
        content-type:“application/json charset=utf-8”,
        success:function(data){
          alert(data);
        }
    });
//@requestBody注解獲取數(shù)據(jù)代碼
@requestMapping("/hello")
    public String hello(@requestBody Integer id,@requestBody String name){
      System.out.println(“id:”+id+";"+“name:”+name);
    }

此時(shí)@requestBody注解就可以獲取到請(qǐng)求中的各個(gè)參數(shù)然后賦值到相對(duì)應(yīng)的方法形參上,另外,當(dāng)有一個(gè)實(shí)體類User包含了id和name的元素的話,在方法里面直接可以寫@requestBody User user就會(huì)自動(dòng)封裝好給我們使用的了,不用麻煩像這樣@requestBody Integer id,@requestBody String name一個(gè)一個(gè)的封裝

到此這篇關(guān)于Spring中@RequestParam、@RequestBody和@PathVariable的用法詳解的文章就介紹到這了,更多相關(guān)@RequestParam、@RequestBody和@PathVariable內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 從字符串中截取等長(zhǎng)字節(jié)的Java代碼

    從字符串中截取等長(zhǎng)字節(jié)的Java代碼

    這篇文章主要介紹了從字符串中截取等長(zhǎng)字節(jié)的Java代碼,有需要的朋友可以參考一下
    2013-12-12
  • 通過一個(gè)map替換字符串中指定的字符變量方法

    通過一個(gè)map替換字符串中指定的字符變量方法

    下面小編就為大家?guī)硪黄ㄟ^一個(gè)map替換字符串中指定的字符變量方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • 2019年最新Java學(xué)習(xí)路線圖

    2019年最新Java學(xué)習(xí)路線圖

    不管你是不懂電腦的小白,還是已經(jīng)步入開發(fā)的大牛,這套路線路絕對(duì)不容錯(cuò)過,路線圖的宗旨就是分享,專業(yè),便利,讓喜愛Java的人,都能平等的學(xué)習(xí),感興趣的同學(xué)可以了解一下
    2019-03-03
  • 單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析

    單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析

    這篇文章主要介紹了單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java實(shí)現(xiàn)TCP互發(fā)消息

    Java實(shí)現(xiàn)TCP互發(fā)消息

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)TCP互發(fā)消息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • java 優(yōu)雅關(guān)閉線程池的方案

    java 優(yōu)雅關(guān)閉線程池的方案

    這篇文章主要介紹了java 優(yōu)雅關(guān)閉線程池的方案,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-11-11
  • spring boot整合RabbitMQ實(shí)例詳解(Fanout模式)

    spring boot整合RabbitMQ實(shí)例詳解(Fanout模式)

    這篇文章主要介紹了spring boot整合RabbitMQ的實(shí)例講解(Fanout模式),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • Java之next()、nextLine()區(qū)別及問題解決

    Java之next()、nextLine()區(qū)別及問題解決

    這篇文章主要介紹了Java之next()、nextLine()區(qū)別及問題解決,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • IDEA代碼規(guī)范插件P3C+代碼注釋模板配置方法

    IDEA代碼規(guī)范插件P3C+代碼注釋模板配置方法

    這篇文章主要介紹了IDEA代碼規(guī)范插件P3C+代碼注釋模板配置方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • java 多態(tài)實(shí)例代碼

    java 多態(tài)實(shí)例代碼

    這篇文章主要介紹了java 多態(tài)實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評(píng)論