1. 程式人生 > >SpringMVC Bean接收POST傳送的JSON資料

SpringMVC Bean接收POST傳送的JSON資料

表單統一提交時,會把表單中每個欄位都會傳到後臺。但是如果,欄位很多,那麼在controller中需要將這些必要的引數一一定義,很麻煩。而如果在前臺將資料組裝成json格式,使用實體接收,會方便很多。

SpringMVC controller中以Bean的形式接收前臺傳遞來的資料,我總結了兩種方式。

  1. @RequestBody 接收json引數
    一個方法中@RequestBody註解只能使用一次。
    使用實體接收,前臺Post請求的報文Content-type用application/json;charset=utf-8方式傳送。
var user = {'name':'小明','age'
:18}; $.ajax({ url: '/ec/job/doSave.do', data: JSON.stringify(user), type: "POST", headers : { 'Content-Type' : 'application/json;charset=utf-8' }, success: function(data){ console.log(JSON.stringify(data)); } });
@RequestMapping
(value = "/doSave", method =RequestMethod.POST) @ResponseBody public Object doSave(HttpServletRequest request, HttpServletResponse response, @RequestBody User user { }

2.json字串傳第到後臺,轉換為實體物件。
@RequestBody 在一個方法中只可以使用一次。如果一個方法中需要多個實體引數,那麼就不能用該註解。
如果傳遞json字串,那麼就不能使用 application/json;charset=utf-8

報文,應該使用預設的application/x-www-form-urlencoded;charset=UTF-8請求型別。

$.ajax({
      url: '/ec/job/doJobSave.do',
      data: {"user" : JSON.stringify(user),
              "addr" : JSON.stringify(addr)},
      type: "POST",
      /*headers : {
                'Content-Type' :'application/json;charset=utf-8'
                },*/
      success: function(data){
        console.log(JSON.stringify(data));
      }
    });
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

@RequestMapping(value = "/doSave", method = RequestMethod.POST)
@ResponseBody
public Object doSave(HttpServletRequest request,                                                                                                                                            HttpServletResponse response,
                @RequestParam(value = "user") String userStr,
                @RequestParam(value = "addr") String addStr) {

    try {
      //將json字串轉換成json物件
      JSONObject jsonobject = JSONObject.fromObject(userStr);
      //將json物件轉換成User實體物件
      User user = (User)JSONObject.toBean(jsonobject, User.class);
      //將json物件轉換成Address實體集合
      JSONArray json = JSONArray.fromObject(addrStr);
      List<Address> addrList= (List<Address>)JSONArray.toCollection(json, Address.class);

    }catch (Exception e) {
      e.printStackTrace();
    }
    return true;
  }

相關推薦

SpringMVC Bean接收POST傳送JSON資料

表單統一提交時,會把表單中每個欄位都會傳到後臺。但是如果,欄位很多,那麼在controller中需要將這些必要的引數一一定義,很麻煩。而如果在前臺將資料組裝成json格式,使用實體接收,會方便很多。 SpringMVC controller中以Bean的形

客戶端POST傳送json資料給服務端,客戶端端接收伺服器端json資料響應

 public static void jsonRequest() throws IOException, URISyntaxException {         //請求的地址         String url = "http://localhost:8080/springmvc/response/r

[php]通過http post傳送json資料

function http_post_data($url, $data_string) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_seto

php接收postjson資料【轉載】

最近用到ext與PHP互動,ext把json資料post給PHP,但在PHP裡面$_post獲取不到,$_REQUEST也獲取不到,但是通過firedebug看到的請求資訊確實是把JSON資料post給了PHP,這什麼情況?突然想到了以前接觸過flash將圖片二進位制流傳給php,靈機一動用$GLOB

php服務端接收postjson資料

最近用到ext與PHP互動,ext把json資料post給PHP,但在PHP裡面$_post獲取不到,$_REQUEST也獲取不到,但是通過firedebug看到的請求資訊確實是把JSON資料post給了PHP,這什麼情況?突然想到了以前接觸過flash將圖片二進位制流傳給php,靈機一動用$GLOBALS[

perl post傳送json資料

sub  wx_init {                #$login_url ="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-$now&lang=zh_CN&pass_ticket=$pa

perl和curl 模擬post 傳送json資料

curl 傳送post 請求: node2:/etc/httpd/conf#curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrpc":"2.0","method":"apiinfo.version",

php接收postjson資料

近用到ext與PHP互動,ext把json資料post給PHP,但在PHP裡面$_post獲取不到,$_REQUEST也獲取不到,但是通過firedebug看到的請求資訊確實是把JSON資料post給了PHP,這什麼情況?突然想到了以前接觸過flash將圖片二進位制流傳給p

httpclient使用post方式傳送json資料,以及服務端的接收

步驟大致如下: 1、客戶端使用StringEntity封裝資料 2、服務端先從request.getInputStream();中獲取資料,再把位元組流轉為字元流 3、最後用response.getWriter().write(param);返回資料給客戶端 4、客戶端

HttpClient post請求 傳送Json資料

import org.apache.http.HttpEntity; import org.apache.http.entity.StringEntity; import org.apache.http.client.methods.CloseableHttpResponse; import

對接第三方介面--使用post請求傳送json資料

對接第三方介面–使用post請求傳送json資料 實習4個多月,終於轉正!終於可以安心好好上班,好好學習!第一篇播客記錄下工作中的中的小知識點。 本文記錄的內容如下: 1.使用HttpClient相關類,包括PostMethod,RequestEntity,Stri

Java post請求傳送json資料在filter中解析方法

大家都知道Java的servlet分get和post請求方式,在servlet或者在集成了springMVC、Struts2的框架的情況下獲取請求的引數。那麼有時候我們需要在攔截其中獲取ServletRequest的引數就不那麼容易了。因為在ServletRequst中,如果是get請求我們可以通過reque

PostMan post請求傳送Json資料

很多同學都習慣了使用傳送get請求以及POST請求傳送表單資料,但是如何使用postman post請求傳送json資料呢. 第一步:在post請求的header裡邊設定傳送資料的型別

php中 curl模擬post傳送json接收json

本地模擬請求伺服器資料,請求資料格式為json,伺服器返回資料也是json. 由於需求特殊性, 如同步客戶端的批量資料至雲端, 提交至伺服器的資料可能是多維陣列資料了.  這時需要將此資料以一定的資料編碼方式(json格式)來組織並提交.以便伺服器很好地處理.

HttpClient通過Post方式傳送Json資料

伺服器用的是Springmvc,介面內容: @ResponseBody @RequestMapping(value="/order",method=RequestMethod.POST) public boolean order(HttpServletRequest

Network 【用 AFN 通過 POST 方式傳送JSON資料的兩種形式】

POST 傳送資料有兩種形式:1、傳送純文字的內容 2、傳送的 body 部分帶有檔案(圖片,音訊或者其他二進位制資料) 1、使用 POST 方式傳送純文字內容: [mgr POST:@"https://AAAAA" parameters:params success:^(AFHTTPRequestOpe

SpringMVC實戰(五)-處理POST提交JSON資料

1.表單提交 2.JSON串 1、客戶端請求 String url = "http://localhost:8080/order/create"; String data = "{\"id\":3, \"cat

[轉]php中 curl模擬post傳送json接收json

本文轉自:https://blog.csdn.net/pangchengyong0724/article/details/52103962 本地模擬請求伺服器資料,請求資料格式為json,伺服器返回資料也是json. 由於需求特殊性, 如同步客戶端的批量資料至雲端, 提交至伺服器的資料可能是多維陣列資料了.

HttpURLConnection 、HttpPost、Okhttp 等POST方式傳送JSON資料

一、HttpURLConnection Post方式傳送JSON資料 public class GetResult extends AsyncTask<String, String, String> { protected void onPreEx

SpringMVC接收和返回JSON資料

SpringMVC接收JSON資料 Spring mvc處理json需要使用jackson的類庫,因此為支援json格式的輸入輸出需要先修改pom.xml增加jackson包的引用 <!-- json --> <depe