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

關(guān)于@RequestParam和@RequestBody的用法及說明

 更新時間:2026年03月16日 15:28:00   作者:灰陽陽  
本文主要介紹了Spring框架中參數(shù)綁定相關(guān)的三個注解:@RequestParam、@ModelAttribute和@RequestBody的使用場景和區(qū)別,通過比較它們的使用場景和注意事項,幫助讀者快速理解并正確使用這些注解,避免在項目開發(fā)中出現(xiàn)常見問題

碎碎念

作為一名學(xué)習(xí)spring框架的小白來說,項目實戰(zhàn)無疑是學(xué)習(xí)成長速度最快的階段之一。但這也不免會遇到很多折磨人的知識點讓人防不勝防。比如參數(shù)綁定相關(guān)注解的使用:

  • @Param
  • @RequestParam
  • @RequestBody

用哪個?啥時候必須用?啥時候可以不用?把俺整的的一愣一愣的。

于是特意整理了這篇博客,目的是幫助大家快速理清這些注解的使用場景和區(qū)別,避開常見的坑點。

前言

本博客將會詳細講解以下參數(shù)綁定相關(guān)注解的使用場景,說明它們之間的關(guān)系和區(qū)別,以及在項目開發(fā)中使用的規(guī)范

  • @RequestParam
  • @RequestBody
  • @@ModelAttribute

一、@RequestParam

@RequestParam專門用于獲取請求URL中的參數(shù),也就是問號?后面的參數(shù)。(HTML的form表單也適用)

例如下面的請求:

GET /search?name=Tom&age=25

對應(yīng)的Controller方法:

@GetMapping("/search")
public String search(@RequestParam String name, @RequestParam Integer age) {
    return "搜索名字:" + name + ",年齡:" + age;
}

什么時候必須用@RequestParam?

當(dāng)方法參數(shù)名和請求參數(shù)名不一致時必須用

@GetMapping("/search")
public String search(@RequestParam("user_name") String name) {
    return name;
}

參數(shù)非必傳時(可選)必須明確標注

@GetMapping("/search")
public String search(@RequestParam(required = false) String name) {
    return name;
}

RequestParam(required = false)的意思是如果前端沒有傳遞參數(shù)name,不會直接報錯,而是賦值null。

什么時候可以不用@RequestParam?

當(dāng)方法參數(shù)名和請求URL參數(shù)名完全一致并且參數(shù)是必傳時,可以省略:

// URL: /search?name=Tom
@GetMapping("/search")
public String search(String name) {
    return name;
}

二、@ModelAttribute

作用

@ModelAttribute`注解專門用于將請求參數(shù)(URL參數(shù)表單數(shù)據(jù))綁定到一個Java對象中,尤其適合表單提交的場景或有多個參數(shù)需要綁定的情況。

例如請求:

GET /user?name=Tom&age=20

對應(yīng)的Controller方法:

@GetMapping("/user")
public String getUser(@ModelAttribute User user) {
    return "姓名:" + user.getName() + ",年齡:" + user.getAge();
}

User類定義:

public class User {
    private String name;
    private Integer age;

    // getter和setter方法必須提供
}

使用@ModelAttribute時的注意點:

  • 對象的屬性名稱必須與請求中的參數(shù)名稱保持一致,這樣才能正確綁定。
  • 如果有多個參數(shù),并且這些參數(shù)是Java對象的,那么推薦使用這個注解(前端發(fā)送請求非JSON等格式的情況下)

三、@RequestBody

@RequestBody用于接收HTTP請求體(Request Body)中的數(shù)據(jù),常用于POST請求,通常是JSON格式的數(shù)據(jù)。

例如POST請求:

POST /user
Content-Type: application/json

{
  "name": "Alice",
  "age": 30
}

對應(yīng)的Controller方法:

@PostMapping("/user")
public String createUser(@RequestBody User user) {
    return "用戶姓名:" + user.getName() + ",年齡:" + user.getAge();
}

User類定義:

public class User {
    private String name;
    private Integer age;

    // getter和setter方法
}

什么時候必須用@RequestBody?

  • 前端發(fā)送JSON數(shù)據(jù)或XML數(shù)據(jù)等格式到后端時必須用。
  • 當(dāng)你需要整個請求體的數(shù)據(jù)綁定到一個Java對象時。

什么時候可以不用@RequestBody?

  • 當(dāng)數(shù)據(jù)從URL參數(shù)(如GET請求)或表單數(shù)據(jù)中獲取時,不需要也不能使用@RequestBody。
  • 對于表單提交,可以使用@ModelAttribute來代替:
@PostMapping("/submit")
public String submitForm(@ModelAttribute User user) {
    return user.getName();
}

四、表格整理

場景傳參方式適用注解是否必須
單個或少量簡單參數(shù)(如 ?name=Tom)URL參數(shù)或表單提交@RequestParam
多個參數(shù)形成對象(如 ?name=Tom&age=20)URL參數(shù)或表單提交@ModelAttribute
JSON、XML數(shù)據(jù)請求體(POST)@RequestBody

使用規(guī)范:

如果仍然覺得比較繞,最簡單粗暴的方式就是全部都用上參數(shù)綁定。

因為不論參數(shù)是否一致,始終明確標注注解,可以提高代碼可讀性和可維護性。

五、總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

长寿区| 万宁市| 陈巴尔虎旗| 隆尧县| 玉树县| 招远市| 开封县| 通道| 永清县| 剑河县| 谷城县| 新郑市| 塔河县| 沙田区| 盐池县| 南昌市| 叙永县| 青浦区| 额济纳旗| 河津市| 竹溪县| 永州市| 巴林左旗| 万宁市| 光泽县| 萍乡市| 古田县| 鹰潭市| 阜平县| 昆明市| 济源市| 沁水县| 大理市| 屯昌县| 读书| 札达县| 惠来县| 容城县| 泌阳县| 大姚县| 河曲县|