7.springMVC和Json的交互(就是后台解析json字符串和向前台傳遞json字符串的過程)


視頻教程地址: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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM