1. 程式人生 > >(九)springmvc之json的數據請求(客戶端發送json數據到服務端)

(九)springmvc之json的數據請求(客戶端發送json數據到服務端)

index.jsp null 字符串 n-2 func mda 客戶 請求 spring

index.jsp

<%@ 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">
<%
    String path = request.getContextPath();
%>
<html>

<script type="text/javascript"
src="<%=request.getContextPath()%>/script/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.json-2.4.js"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.form.js"></
script> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> function test_2(){ var postURL = "<%=request.getContextPath()%>/jsonController/receive_jsonData_2?date="+new Date()
+""; //第2種簡單的方法 var formData = jQuery("#json_form2").serializeArray(); //將這個數組轉為json的對象。 var jsonData = convertArray(formData); //將json對象轉為字符串後,才能發送。 var jsonDataStr = jQuery.toJSON(jsonData); jQuery.ajax({ //請求 type: "POST", url: postURL, data: jsonDataStr, contentType:"application/json", //返回 dataType: "json", success: function(msg){ alert( "Data Saved: " + msg ); } }); } function convertArray(o) { //主要是推薦這個函數。它將jquery序列化後的值轉為name:value的形式。 var v = {}; for (var i in o) { if (typeof (v[o[i].name]) == undefined) v[o[i].name] = o[i].value; else v[o[i].name] += "," + o[i].value; } return v; } </script> </head> <body> <form method="post" id="json_form2" action=""> <input type="text" name="dogid" id="dogid" value="用戶名"/> <input type="text" name="dogname" id="dogname" value="復選框1"/> <input type="button" value="發送是一個json字符串" onclick="test_2();"/> </form> </body> </html>

controller

/**
     * Spring中接收json對象的2種方式
     * 
     * RequestBody DogBean dogBean
     * 
     * 不加RequestBody,表示接收的是一個普通的GET或者POST的請求,請求中的參數與Bean中的屬性一致。 Bean即可接收。
     * 
     * 加RequestBody,表示接收的是一個json字符串的請求數據,Spring會自動將json字符串轉成json對象 。
     * 
     *
     */    
@RequestMapping(value = "/receive_jsonData_2")
    public String receive_jsonData_2(@RequestBody DogBean dogBean) {
        System.out.println("dogBean = " + dogBean);
        System.out.println(dogBean.getDogid() + "\t" + dogBean.getDogname());
        return null;
    }
  • 如果這裏不加@RequestBody ,那麽將無法將request裏的參數封裝到dogBean中,因為request裏的數據格式是json格式,而自動封裝的格式為“dogid=1&dogname=dog1” 這種格式才能自動封裝。

(九)springmvc之json的數據請求(客戶端發送json數據到服務端)