1. 程式人生 > >常用註解之@ResponseBody與@RequestBody與@RestController

常用註解之@ResponseBody與@RequestBody與@RestController

@ResponseBody:

@ResponseBody是作用在方法上的,@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在非同步獲取資料時使用【也就是AJAX】,在使用 @RequestMapping後,返回值通常解析為跳轉路徑,但是加上 @ResponseBody 後返回結果不會被解析為跳轉路徑,而是直接寫入 HTTP response body 中。 比如非同步獲取 json 資料,加上 @ResponseBody 後,會直接返回 json 資料。@RequestBody 將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個物件。

 

@RequestBody:

 通過@requestBody可以將請求體中的JSON字串繫結到相應的bean上,當然,也可以將其分別繫結到對應的字串上。
    例如說以下情況:
    $.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",
        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中的屬性名,否則是請求不過去的。

            @requestBody註解常用來處理通常用於處理json格式的內容,將json對應的值轉換為需要的類物件或者其他,前臺ajax提交請求時應當為json格式,比如:

 

 

通過 contentType: "application/json; charset=utf-8" 定義請求內容的格式
data: JSON.stringify(tableArrayJsonData1) 把需要傳的引數轉為json格式

後臺接收:

這樣寫好之後,@RequestBody會自動來解析JSON傳,對應到@RequestBody的實體類裡面去。

 

@RestController:

@RestController註解相當於@ResponseBody + @Controller合在一起的作用。

 

 

參考文章:

https://www.cnblogs.com/qiankun-site/p/5774300.html