springmvc之@ResponseBody 和 @RequestBody 註解的區別

  • @Responsebody 註解表示該方法的返回的結果直接寫入 HTTP 響應正文(ResponseBody)中,一般在異步獲取數據時使用;

  • 在使用 @RequestMapping 後,返回值通常解析爲跳轉路徑,加上 @Responsebody 後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP 響應正文中。例如,異步獲取 json 數據,加上 @Responsebody 註解後,就會直接返回 json 數據。

  • @RequestBody 註解則是將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個對象。
    例如:

    @RequestMapping(value = "person/login")
    @ResponseBody
    public Person login(@RequestBody Person person) {// 將請求中的 datas 寫入 Person 對象中
        return person;    // 不會被解析爲跳轉路徑,而是直接寫入 HTTP 響應正文中
    }
    

頁面異步請求:

function login() {
    var datas = '{"name":"' + $('#name').val() + '","id":"' + $('#id').val() + '","status":"' + $('#status').val() + '"}';
    $.ajax({
        type : 'POST',
        contentType : 'application/json',
        url : "${pageContext.request.contextPath}/person/login",
        processData : false,
        dataType : 'json',
        data : datas,
        success : function(data) {
            alert("id: " + data.id + "name: " + data.name + "status: "+ data.status);
        },
        error : function() {
            alert('Sorry, it is wrong!');
        }
    });
};

原文地址:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章