昨天給大家分享了SpringMVC的文件上傳功能,今天來跟大家分享下SpringMVC與前臺的json數據交互。
json數據格式在接口調用中、html頁面中比較常用,json格式比較簡單,解析也比較方便,所以使用很普遍。在springmvc中,也支持對json數據的解析和轉換。
1. 兩種交互形式
springmvc和前臺交互主要有兩種形式,如下圖所示:
可以看出,前臺傳過來的方式有兩種,一種是傳json格式的數據過來,另一種就是在url的末尾傳普通的key/value串過來,針對這兩種方式,在controller中會有不同的解析,但是在controller中返回的json格式的數據都是一樣的。下面來具體分析一下springmvc是如何與前臺進行json數據的交互的。
2. 配置json轉換器
配置json轉換器有兩種方式,如果是配置了註解適配器org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter的話,需要在該適配器中配置json轉換器, 如下:
但是如果使用<mvc:annotation-driven />註解驅動的話就不用以上的配置了,默認已經配好了。建議使用這種,比較方便。
3. json交互測試
1)前臺傳輸的是json格式數據
我們使用jquery的ajax提交json串,對輸出的json結果進行解析。前臺的程序如下:
看一下controller中是如何操作的。
由於前臺傳的是name和price兩個屬性,所以在後臺就用ItemsCustom來接收了,這個類中也有這兩個屬性。重點是@RequestBody註解,它是將前臺傳過來的json串穿換成itemsaCustom對象,然後再將該對象return回去,通過@ResponseBody註解將itemsCustom對象轉成json格式返回給前臺。這樣前臺接收到了後就可以解析了。我們看一下測試的結果:
響應的結果,null表示空值而已,這裏就返回了原對象,也就只有name和price屬性。
2)前臺傳輸的是key/value格式的數據
我們還是使用jquery的ajax提交key/value串,對輸出的json結果進行解析。前臺的程序如下:
因爲key/value串不是json格式的,所以controller在接收的時候就不需要@RequestBody的註解了,但是返回到前臺的json格式的數據還是需要@ResponseBody註解的,如下:
測試結果如下:
springmvc與前臺json數據的交互就總結這麼多。