springmvc的json數據交互

準備

@RequestBody

做用:javascript

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

 

@ResponseBody

做用:java

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

 

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

本例中:ajax

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

 

@ResponseBody註解實現將Controller方法返回java對象轉換爲json響應給客戶端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

若是不使用註解驅動<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>
相關文章
相關標籤/搜索