最近在做ajax進行用戶名校驗時遇到了一些問題,在不斷debug的過程中也加深了我對springMVC之ajax傳遞jason數據的理解,希望對有需要的小伙伴一些幫助~
工具:IDEA
我們通過code來理解一下:
1.如下圖時js代碼:因為是對用戶名校驗,所以傳入的數據只有用戶名;
PS:SpringMVC 通過ajax傳參到后台時:因為@RequestBody接收的是一個Json對象的字符串,而不是一個Json對象。然而在ajax請求往往傳的都是Json對象,用 JSON.stringify(data)的方式就能將對象變成字符串。同時ajax請求的時候也要指定dataType: "json",contentType:"application/json"。
2.controller中的實現:
大家可以發現我們傳入的數據只有用戶名為什么RequestBody得到的是一個POJO類的對象(當然這個Admin類不止這個屬性啦)呢?那就需要我們對@RequestBody和@ResponseBody這兩個注解和SpringMVC中ajax的具體操作有一個了解啦。
①.首先簡單介紹下Jackson:Jackson是一個簡單基於Java應用庫,Jackson可以輕松的將Java對象轉換成json對象和xml文檔,同樣也可以將json、xml轉換成Java對象;要引入強大的Jackson需要我們在pom.xml中導入相關的依賴(需要配置XML <mvc:annotation-driven /> )
如圖:
可以在外部庫中看到:
關於Jackson的詳細用法大家可以參考這篇文章https://www.cnblogs.com/naaoveGIS/p/3893651.html
②.@RequestBody:簡單的說就是 RequestBody用於獲取請求體的結構,使用了Jackson框架和@RequestBody注解后所以可以實現把請求體的內容封裝到Admin對象中,同時Spring MVC 會按請求參數名和 POJO 屬性名進行自動匹配,自動為該對象填充屬性值。
③.@ResponseBody:ResponseBody將返回的值直接寫到Http的響應體中,不需要替換為Spring的Model或者解析為視圖,相當於response.getWriter.write();當使用了Jackson框架和@ResponseBody注解之后,Jackson框架自動將對象解析成Json串返還數據給前端頁面。
大家想詳細了解@RequestBody和@ResponseBody的參考這篇文章:http://www.chinacion.cn/article/608.html
因此我們傳入的Jason數據由於我們添加了Jackson依賴后會被轉換為Java對象,同時Spring MVC 會按請求參數名和 POJO 屬性名進行自動匹配,所以我們對POJO類的對象調用service層的方法啦~是不是覺得灰常強大灰常好用啊,嘻嘻小伙伴要是覺得有幫助的話歡迎頂一下哈~