視頻教程地址:http://edu.51cto.com/sd/2cfc2
springMVC中和json的交互:主要分為兩點,一是傳遞過來的是json字符串,springMVC會先進行解析,二是傳遞過來的是key:value那么springMVC可以不進行解析,這里的解析指的是json和java對象之間的轉換
java對象:就是實體類的對象
首先先來看一張交互的圖:
分析:
1.從這個圖中我們可以看出來,前台請求的數據如果是json字符串,我們需要用@RequestBody先將json字符串轉成java對象,然后前台傳輸的是java對象的時候就需要用@ResponseBody將我們的java對象,轉成json格式的字符串,這樣頁面才可以解析
代碼實現比較簡單:
jar包記得導入(json的幾個包)
前台頁面用(jquery實現)點擊一個按鈕,發起一個ajax請求,傳輸json數據到后台:
<script type="text/javascript" src="js/jquery-2.2.2.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#json").click(function() { $.ajax({//ajax請求 type : 'post',//請求方法 url : 'test_json',//請求路徑 contentType : 'application/json;charset=utf-8',//指定傳送json格式數據,並指定編碼 data : '{"sid":"1","name":"老白","sex":"女"}',//json格式數據 success : function(data) {//回調函數 alert(data.name); } }); }); }); </script>
后台控制器:后台控制在接收的參數中要先用@RequestBody先把json數據轉成java對象,然后返回java對象的時候要用@ResponseBody將java對象轉成json格式數據。
@RequestMapping(value="/test_json") @ResponseBody public Student test_json(@RequestBody Student stu){ return stu; }
2.第二種方式就是請求的是key:value的字符串,那么在控制器在接收的時候就不需要用到@RequestBody,但是你返回的是java對象,就需要用@ResponseBody將java對象轉成json格式數據。實現起來的代碼和上面類似,直接貼代碼,不解釋了。
頁面發起請求代碼:
<script type="text/javascript"> $(document).ready(function() { $("#key").click(function() { $.ajax({ type : 'post', url : 'test_key', //contentType : 'application/json;charset=utf-8', data : 'name=白&sex=nan', success : function(data) { alert(data); } }); }); }); </script>
控制器處理代碼:
@RequestMapping(value="/test_key") @ResponseBody public Student test_key(Student stu){ return stu; }