關於@RequestBody注解詳解


關於@RequestBody注解詳解

加了@RequestBody注解后前端調用參數設置問題(2021.7.21)

1、@requestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。@RequestBody接受的是一個json格式的字符串,一定是一個字符串。

2、通過@requestBody可以將請求體中的JSON字符串綁定到相應的bean上,當然,也可以將其分別綁定到對應的字符串上。

例如說以下情況:

$.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",  //要特別注意后台接口是否加了@RequestBody,決定了傳遞參數的類型
        success:function(data){
          alert("request success ! ");
        }
    });

后台接口

@requestMapping("/login")
    public void login(@requestBody String userName,@requestBody String pwd){
      System.out.println(userName+" :"+pwd);
    }

這種情況是將JSON字符串中的兩個變量的值分別賦予了兩個字符串,但是呢假如我有一個User類,擁有如下字段:
      String userName;
      String pwd;
    那么上述參數可以改為以下形式:@requestBody User user 這種形式會將JSON字符串中的值賦予user中對應的屬性上

    需要注意的是,JSON字符串中的key必須對應user中的屬性名,否則是請求不過去的。

@requestMapping("/login")
    public void login(@requestBody User user){
      System.out.println(userName+" :"+pwd);
    }

總結和注意:

1.@RequestBody接受的是一個json格式的字符串,一定是一個字符串。

2.在使用springmvc的做項目時,不要將JSON字符串和JSON對象混淆了。

3.加了@RequestBody注解的參數類型是一個json的字符串,不是一個對象,前端調用接口的時候特別要注意參數傳遞的類型。(可以通過JSON.stringify(Json_Str) 該方法把前端的字符串格式化了在發送 )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM