天天看點

SpringMVC 與 Json實作資料互動

最近在學習SpringMVC與前端進行資料互動,其中比較常用的就是使用json,在學習期間遇到不少問題,特記錄一下。

1.準備工作(jar包的引入)

1.1 jackson包

1.2 jquery包

1.3 spring的核心包

2.spring的配置

在springmvc中想要使用ajax傳遞json與背景互動需要配置

<mvc:annotation-driven/>  
<mvc:resources location="/js/" mapping="/js/**"/> 
           

第一個是實作注解開啟,用于json轉換器的開啟

第二個是配置spring對靜态資源的通路處理,否則該資源也會被DispatcherServlet攔截。(開始時我也沒有注意,發現調用到jq檔案時總是報404錯誤)

3.json傳遞的方式

3.1 傳遞json串

<!-- 前端頁面代碼,定義兩個from表單,第一個送出資料到背景
     然後背景處理傳回到第二個表單-->
<from> <input type="text" id="u1" name="u1" />
    <br />
    <input type="text" id="p1" name="p1" />
    <br />
    <input type="button" value="送出" onclick="returnJson()" /> </from>
    <br />
    <from> <input type="text" id="u2" name="u2" />
    <br />
    <input type="text" id="p2" name="p2" /> </from>
           

對應的js代碼

function returnJson() {
        var u1 = $("#u1").val();
        var p1 = $("#p1").val();
        var user = {
            username : $("#u1").val(),
            password : $("#p1").val()
        };
        alert(user.username);
        $.ajax({
            type : 'post',
            url : '${pageContext.request.contextPath}/returnjson',
            contentType : 'application/json;charset=utf-8',
            data : JSON.stringify(user),
            success : function(data) {
                $("#u2").val(data.username);
                $("#p2").val(data.password);
            }
        })

    }
           

其中stringify()用于從一個對象解析出字元串,如

var a = {a:1,b:2}

結果:

JSON.stringify(a)

“{“a”:1,”b”:2}”

背景的 Controller代碼

@Controller
public class jsonAction {

    @RequestMapping("/returnjson")
    @ResponseBody
    public User returnJson(@RequestBody User user)
    {   
        String username=user.getUsername();
        String password=user.getPassword();
        System.out.println(username+" "+password);
        user.setUsername(username+"c");
        user.setPassword(password+"c");
        return user;
    }
}
           

需要寫一個User的bean實體。

其中

@RequestMapping:url的映射處理

@ResponseBody :将java對象轉化為json串,這樣前端才能解析

@RequestBody :将json串轉化為java對象,這樣才能以bean處理

實際效果圖:

SpringMVC 與 Json實作資料互動

3.2以key/value的格式

第一種:

{"username":"reader001","password":"psw001"}
           

第二種:

其中第一種的傳遞與以json串的傳遞處理方式一樣

第二種的話就不需要@RequestBody,因為它不是json格式。但是傳回還是需要使用@ResponseBody進行轉換。

需要注意的就是

1. 靜态資源的配置

2. json.stringify()

3. @ResponseBody 和 @RequestBody的使用

以上參考部落格:http://blog.csdn.net/eson_15/article/details/51742864