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

Springboot傳參詳解

 更新時間:2023年11月21日 15:14:08   作者:編程界小明哥  
這篇文章主要介紹了Springboot傳參的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

測試工具 IDEA、postman

一、@RequestParam

針對QueryString參數(shù)傳遞,在請求URL中直接拼接請求參數(shù),如URL?param1=value1& param2=value2

1.傳遞基本類型參數(shù)

在接收的方法中用@RequestParam注解修飾,指定前端傳遞的參數(shù)名稱

@RequestMapping("QueryStringTest1")
public String QueryStringTest1(@RequestParam("id") String id,@RequestParam("name") String name){
    return "id is "+ id+",name is "+ name;
}

Postman 中調(diào)用

如果傳遞的參數(shù)和接收的參數(shù)名一致,甚至可以省略相關配置

省略1

@RequestParam(“id”) 中的參數(shù)名id被省略

@RequestMapping("QueryStringTest2")
public String QueryStringTest2(@RequestParam String id,@RequestParam String name){
    return "id is "+ id+",name is "+ name;
}

注意:因為有RequestParam注解的存在,所以傳參必須包含所有使用RequestParam注解的接收參數(shù),否則會報錯(允許傳空,但是必須包含參數(shù));
可以使用@RequestParam(value = “id”,required = false) 的方式,讓id未傳也可以。

省略2

@RequestParam 注解直接被省略

@RequestMapping("QueryStringTest3")
public String QueryStringTest3(String id, String name){
    return "id is "+ id+",name is "+ name;
}

允許其中的參數(shù)不傳,不會報錯,但取值為null,比如name不傳

傳參和入?yún)⒚灰粯拥那闆r

@RequestMapping("QueryStringTest4")
public String QueryStringTest4(@RequestParam("id") String myId,@RequestParam("name") String myName){
   return "myId is "+ myId+",myName is "+ myName;
}

2.傳遞對象類型參數(shù)

定義一個對象,屬性名稱和前端傳遞的參數(shù)名稱一致即可

 @RequestMapping("objectTest1")
 public String objectTest1(User user){
     return "user.id is "+ user.getId()+",user.name is "+ user.getName();
 }

未傳的屬性值為null

加上注解@RequestParam,會怎么樣呢? 會報錯,不要這樣用


@RequestMapping("objectTest3")
public String objectTest3(@RequestParam User user){
    return "user.id is "+ user.getId()+",user.name is "+ user.getName();
}

3.傳遞數(shù)組、集合類型 數(shù)組

拼接多個參數(shù)名稱一樣的參數(shù)即可,如URL?param=value1&param=value2&param=value3

@RequestMapping("arrayTest1")
public String[] arrayTest1(@RequestParam String[] name){
    for (String temp:name){
        System.out.println(temp);
    }
    return name;
}

對同一個參數(shù)賦多個值,多個值之間用,隔開,如URL?param=value1,value2,value3

集合

只舉例List,其他類似

@RequestMapping("listTest1")
public List listTest1(@RequestParam List name){
    for(int i=0;i<name.size();i++){
        System.out.println("list name==="+name.get(i));
    }
    return name;
}

二、@PathVariable

路徑傳參方式是將參數(shù)直接包含在URL路徑中,比如URL/paramValue1/paramValue2

在接口對應的請求路徑中用{參數(shù)名}形式標出路徑參數(shù)
在接口方法的參數(shù)上標注@PathVariable指名對應路徑參數(shù)的參數(shù)名

1.傳遞基本類型參數(shù)

 @RequestMapping("pathTest1/{id}/{name}")
 public String pathTest1(@PathVariable("id") String id, @PathVariable("name") String name){
     return "id is "+ id+",name is "+ name;
 }

能省略這個注解嗎?我的結論是不可以,請看下面

@RequestMapping("pathTest2/{id}/{name}")
public String pathTest2(String id,String name){
    return "id is "+ id+",name is "+ name;
}

2.傳遞數(shù)組、集合類型 數(shù)組

@RequestMapping("pathArrayTest1/{name}")
public String[] pathArrayTest1(@PathVariable("name") String[] names){
    for (String name:names){
        System.out.println("array name:"+name);
    }
    return names;
}

集合

@RequestMapping("pathListTest1/{name}")
public List pathListTest1(@PathVariable("name") List names) {
    for (int i=0;i<names.size();i++) {
        System.out.println("list name:" + names.get(i));
    }
    return names;
}

文件

// MultipartFile接收
@PostMapping("upload")
public String uploadFile(@RequestParam("file") MultipartFile myFile){
    return "type:"+myFile.getContentType()
            +" fileName:"+myFile.getOriginalFilename()
            +" size:"+myFile.getSize();
}

測試的注意點

  • 用post
  • 用Body的form-data
  • 參數(shù)類型選擇File 而不是默認的Text

三、@RequestBody

針對body表單傳參,RequestBody只能有一個

1.傳遞基本類型參數(shù)

@RequestMapping("bodyTest1")
public String bodyTest1(@RequestBody String name){
   return "name is:"+name;
}

2. 傳遞對象類型參數(shù)

比如User 對象

@RequestMapping("bodyTest2")
public String bodyTest2(@RequestBody User user){
    return "name is:"+user.getName() + " age is:"+user.getAge();
}

3. 傳遞數(shù)組、集合類型

數(shù)組

@RequestMapping("bodyTest3")
public String bodyTest3(@RequestBody String[] users){
    return Arrays.asList(users).toString();
}

集合

User對象

@RequestMapping("bodyTest4")
public String bodyTest4(@RequestBody List<User> users){
    return users.toString();
}

String類型

@RequestMapping("bodyTest5")
public String bodyTest5(@RequestBody List<String> users){
    return users.toString();
}

*Json對象

添加依賴

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.56</version>
</dependency>

后端代碼

@RequestMapping("bodyTest6")
public String bodyTest6(@RequestBody JSONObject user){
    return "name is :"+user.get("name")+
            " age is :"+user.get("age");
}

四、HttpServletRequest

明哥以前經(jīng)常用

@RequestMapping("httpRequest")
public String httpRequest(HttpServletRequest request){
    return "name is :"+request.getParameter("name")+
            " age is :"+request.getParameter("age");
}

或者

五、@PathVariable+@RequestParam混合

@RequestMapping("pathAndParam/{id}")
public String pathAndParam(@PathVariable("id") String id, @RequestParam("name") String name){
    return "id is "+ id+",name is "+ name;
}

六、@PathVariable+@RequestBody混合

@RequestMapping("pathAndBody/{id}")
public String pathAndBody(@PathVariable("id") String id, @RequestBody User user){
    return "id is "+ id+",name is "+ user.getName();
}

七、無注解傳參

@RequestMapping("other")
public String other(User user){
    return "name is:"+user.getName() + " age is:"+user.getAge();
}

小結

這節(jié)總結了“ Springboot傳參詳解 ”,希望能對大家有所幫助

到此這篇關于Springboot傳參詳解的文章就介紹到這了,更多相關Springboot傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中switch-case結構的使用方法舉例詳解

    Java中switch-case結構的使用方法舉例詳解

    這篇文章主要介紹了Java中switch-case結構使用的相關資料,switch-case結構是Java中處理多個分支條件的一種有效方式,它根據(jù)一個表達式的值來執(zhí)行不同的代碼塊,需要的朋友可以參考下
    2025-01-01
  • Java 面試題和答案 - (下)

    Java 面試題和答案 - (下)

    本文主要介紹Java 面試題,這里整理了Java面試題關于JDBC,線程異常處理,Servlet,JSP的知識的整理,幫助大家理解知識點,便于面試,有興趣的小伙伴可以參考下
    2016-09-09
  • 使用Maven進行依賴排除的詳細步驟

    使用Maven進行依賴排除的詳細步驟

    在Maven中,依賴排除是一種常見的技術,用于從項目的依賴中排除特定的傳遞性依賴,這通常用于解決依賴沖突或避免引入不需要的庫,以下是如何在Maven中使用依賴排除的詳細步驟,包括代碼示例,需要的朋友可以參考下
    2024-11-11
  • Springboot添加支付接口

    Springboot添加支付接口

    這篇文章主要介紹了springboot如何添加支付接口,幫助大家更好得理解和學習使用springboot框架,感興趣的朋友可以了解下
    2021-04-04
  • Java中IO流的BufferedOutputStream和FileOutputStream對比

    Java中IO流的BufferedOutputStream和FileOutputStream對比

    這篇文章主要介紹了Java中IO流的BufferedOutputStream和FileOutputStream對比,不帶緩沖的操作,每讀一個字節(jié)就要寫入一個字節(jié),由于涉及磁盤的IO操作相比內(nèi)存的操作要慢很多,所以在讀寫的字節(jié)比較少的情況下,效率比較低,需要的朋友可以參考下
    2023-07-07
  • Java Stream流知識總結

    Java Stream流知識總結

    這篇文章主要介紹了Java Stream流的相關知識,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • 淺析Java單例設計模式(自寫demo)

    淺析Java單例設計模式(自寫demo)

    Java單例模式是看起來以及用起來簡單的一種設計模式,但是就實現(xiàn)方式以及原理來說,也并不淺顯,下面這篇文章主要給大家詳細介紹了Java中單例模式,需要的朋友可以參考下
    2021-12-12
  • Spring中SmartLifecycle和Lifecycle的作用和區(qū)別

    Spring中SmartLifecycle和Lifecycle的作用和區(qū)別

    這篇文章主要介紹了Spring中SmartLifecycle和Lifecycle的作用和區(qū)別,本文通過實例代碼給大家介紹的非常詳細對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 詳細了解MyBatis的異常處理機制

    詳細了解MyBatis的異常處理機制

    本文將對MyBatis的異常體系以及異常使用進行學習,MyBatis版本是3.5.6,作為一款成熟的ORM框架,MyBatis有自己一套成熟的異常處理體系,,需要的朋友可以參考下
    2023-06-06
  • Java關于數(shù)組的介紹與使用

    Java關于數(shù)組的介紹與使用

    數(shù)組(Array)是有序的元素序列。 若將有限個類型相同的變量的集合命名,那么這個名稱為數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標變量
    2021-09-09

最新評論