1. 程式人生 > >springmvc的json數據交互

springmvc的json數據交互

page ima str pro 請求 OS CA 轉換器 context

準備

@RequestBody

作用:

@RequestBody註解用於讀取http請求的內容(字符串),通過springmvc提供的HttpMessageConverter接口將讀到的內容(json數據)轉換為java對象並綁定到Controller方法的參數上。

@ResponseBody

作用:

@ResponseBody註解用於將Controller的方法返回的對象,通過springmvc提供的HttpMessageConverter接口轉換為指定格式的數據如:json,xml等,通過Response響應給客戶端

需求:通過jsp頁面請求json,相應json.

本例中:

@RequestBody註解實現接收http請求的json數據,將json數據轉換為java對象進行綁定

@ResponseBody註解實現將Controller方法返回java對象轉換為json響應給客戶端

實現步驟

1 加入jar包

技術分享圖片

2 準備一個jsp頁面

書寫一個jsp頁面,用於向服務器提交json數據

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>json數據交互</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript"> $(
function(){ //alert(); //$.post(); //寫回的可以指定是json字符串,不能發送json字符串 var params ={"id": 1,"name": "測試商品","price": 99.9,"detail": "測試商品描述","pic": "123456.jpg"}; $.ajax({ url : "${pageContext.request.contextPath }/json.action", data : params, contentType : "application/json;charset=UTF-8", //發送數據的格式 type : "post", dataType : "json", //回調 success : function(data){ alert(data.name); } }); }); </script> </head> <body> <h1>這也頁面用於json數據交互的練習</h1> </body> </html>

3 JsonController編寫

package com.test.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.test.springmvc.pojo.Items;

@Controller
public class JsonController {

    /*
     * json數據交互
     */
    @RequestMapping("/json.action")
    public @ResponseBody Items jsonTest(@RequestBody Items items){
        System.out.println(items);
        return  items;
    }
}

4 Items類

技術分享圖片
package com.test.springmvc.pojo;

import java.util.Date;

public class Items {
    private Integer id;

    private String name;

    private Float price;

    private String pic;

    private Date createtime;

    private String detail;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic == null ? null : pic.trim();
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail == null ? null : detail.trim();
    }
}
View Code

3 配置json轉換器

本例中並不需要配置json轉換器。因為我使用的註解驅動開發。

如果不使用註解驅動<mvc:annotation-driven />,就需要給處理器適配器配置json轉換器,參考之前學習的自定義參數綁定。

springmvc.xml配置文件中,給處理器適配器加入json轉換器:

<!--處理器適配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
          <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
        </list>
    </property>
</bean>

springmvc的json數據交互