摘要:客戶端提交阻止默認事件得到搜索框數(shù)據(jù)值轉(zhuǎn)為的方法失敗啦當前請求方式為控制臺輸出當前請求方式為客戶端彈窗三以方式接收以數(shù)組形式傳遞客戶端失敗啦注意傳遞到后端時應(yīng)為的格式數(shù)據(jù),否則可能會出現(xiàn)錯誤。
前后端的數(shù)據(jù)交互,除了通過form表單進行提交外,也可以通過ajax向后端傳遞和接收json格式數(shù)據(jù)(這種方式可以實現(xiàn)請求數(shù)據(jù)和頁面分離)。本文將總結(jié)一下在Spring MVC中接收和響應(yīng)json數(shù)據(jù)的幾種方式。
準備步驟:
1.導(dǎo)入json相關(guān)框架的依賴(比如jackson)。
2.spring mvc的controller方法正常寫,如果需要響應(yīng)json,增加@responsebody注解。
3.在接受json對應(yīng)的輸入?yún)?shù)前,加上@RequestBody注解。
服務(wù)端接收json數(shù)據(jù)還原為java對象,稱為反序列化,反之,將java對象作為響應(yīng)轉(zhuǎn)換為json數(shù)據(jù)發(fā)回給客戶端,稱為序列化。
注意:因為要使用ajax,所有一定要引入jQuery,切記!
jackson maven依賴:
一、以實體類接收com.fasterxml.jackson.core jackson-core 2.7.0 com.fasterxml.jackson.core jackson-databind 2.7.0 com.fasterxml.jackson.core jackson-annotations 2.7.0
背景:當ajax傳遞的參數(shù)較多時,采用參數(shù)名匹配的方法不太方便。如果后臺有對應(yīng)的實體類,這時可以選擇在客戶端將數(shù)據(jù)封裝為json格式傳遞給后臺,后臺用對應(yīng)的實體類進行接收。
客戶端:
@responseBody注解是將controller的方法返回的對象通過適當?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后,寫入到response對象的body區(qū),通常用來返回JSON數(shù)據(jù)或者是XML。@RequestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內(nèi)容。一般情況下來說常用其來處理application/json類型。
Controller:
@Controller public class PassJsonParam { @RequestMapping(value="acceptJsonByEntity",method = RequestMethod.POST) @ResponseBody public Book acceptJsonByEntity(@RequestBody Book book, HttpServletRequest request){ System.out.println("當前http請求方式為:"+request.getMethod()); System.out.println("bookId="+book.getBookId()+", author="+book.getAuthor()); return book; } }
控制臺輸出:當前http請求方式為:POST bookId=1, author=Jack
客戶端(彈窗):success:1,Jack
如果Controller中的所有方法都需要返回json格式數(shù)據(jù),可以使用@RestController注解。@RestController = @Controller + @ResponseBody
Controller(上面的Controller可以用下面的替換):
@RestController public class PassJsonParam { @RequestMapping(value="acceptJsonByEntity",method = RequestMethod.POST) public Book acceptJsonByEntity(@RequestBody Book book, HttpServletRequest request){ System.out.println("當前http請求方式為:"+request.getMethod()); System.out.println("bookId="+book.getBookId()+", author="+book.getAuthor()); return book; } }
注意:使用了@RestController注解后,Controller的方法無法再返回jsp頁面或者html,配置的視圖解析器也不會起作用。
二、以map方式接收背景:前臺向后臺發(fā)送ajax請求并且攜帶很多參數(shù),而后臺并沒有對應(yīng)的實體類進行接收又該如何處理呢?最常見的就是表單,這里可以考慮使用map來解決。因為map的數(shù)據(jù)結(jié)構(gòu)為key-value形式,所以我們可以遍歷搜索框表單,將表單的name作為map的key,表單的value作為map的value。
客戶端:
Controller:
@RequestMapping(value="acceptJsonByMap") @ResponseBody public MapacceptJsonByMap(@RequestBody Map paramsMap, HttpServletRequest request){ System.out.println("當前http請求方式為:"+request.getMethod()); System.out.println(paramsMap); return paramsMap; }
控制臺輸出:當前http請求方式為:POST {bookName=Love, author=Frank}
客戶端(彈窗):bookName =Love; author=Frank
三、以list方式接收(以json數(shù)組形式傳遞)客戶端:
注意:傳遞到后端時,list應(yīng)為[ { key1 : value1}{ key2 : value2} ]的json格式數(shù)據(jù),否則可能會出現(xiàn)Json parse error錯誤。
Controller:
@RequestMapping(value="acceptJsonByList") @ResponseBody public ListacceptJsonByList(@RequestBody List book, HttpServletRequest request){ System.out.println("當前http請求方式為:"+request.getMethod()); System.out.println(book); return book; }
注意:這里需要Book實體類進行接收。
控制臺輸出:當前http請求方式為:POST [entity.Book@1138a75c, entity.Book@22d1cbcf]
客戶端(彈窗):bookId =123; author=Rose bookId =321; author=Jack
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73662.html
摘要:簡介注解用于修飾的方法,根據(jù)的的內(nèi)容,通過適當?shù)霓D(zhuǎn)換為客戶端需要格式的數(shù)據(jù)并且寫入到的數(shù)據(jù)區(qū),從而不通過視圖解析器直接將數(shù)據(jù)響應(yīng)給客戶端。并且這些解析器都實現(xiàn)了接口,在接口中有四個最為主要的接口方法。 SpringMVC 細節(jié)方面的東西很多,所以在這里做一篇簡單的 SpringMVC 的筆記記錄,方便以后查看。 Spring MVC是當前最優(yōu)秀的MVC框架,自從Spring 2.5版本...
摘要:方法和對應(yīng)的方法定義定義重啟服務(wù)器,運行上面的程序。五添加支持實現(xiàn)跨域訪問當訪問時,你可能需要面對同源策略問題。錯誤如下一般來說,在服務(wù)器端,我們在響應(yīng)中返回額外的訪問控制頭,實現(xiàn)跨域鏈接。 一、理解 REST REST(Representational State Transfer),中文翻譯叫表述性狀態(tài)轉(zhuǎn)移。是 Roy Thomas Fielding 在他2000年的博士論文中提出...
摘要:是一個基于的框架??刂破鲗⒁晥D響應(yīng)給用戶通過視圖展示給用戶要的數(shù)據(jù)或處理結(jié)果。有了減少了其它組件之間的耦合度。 相關(guān)閱讀: 本文檔和項目代碼地址:https://github.com/zhisheng17/springmvc 轉(zhuǎn)載請注明出處和保留以上文字! 了解 Spring: Spring 官網(wǎng):http://spring.io/ 一個好的東西一般都會有一個好的文檔解釋說明,如果你...
摘要:環(huán)境要求使用純來搭建環(huán)境,要求的版本必須在以上。即視圖解析器解析文件上傳等等,如果都不需要配置的話,這樣就可以了。可以將一個字符串轉(zhuǎn)為對象,也可以將一個對象轉(zhuǎn)為字符串,實際上它的底層還是依賴于具體的庫。中,默認提供了和的,分別是和。 在 Spring Boot 項目中,正常來說是不存在 XML 配置,這是因為 Spring Boot 不推薦使用 XML ,注意,并非不支持,Spring...
閱讀 2437·2021-10-09 09:59
閱讀 2191·2021-09-23 11:30
閱讀 2599·2019-08-30 15:56
閱讀 1155·2019-08-30 14:00
閱讀 2946·2019-08-29 12:37
閱讀 1265·2019-08-28 18:16
閱讀 1668·2019-08-27 10:56
閱讀 1033·2019-08-26 17:23