當SpringMVC遇上前端傳來的json

2021-08-20 14:22:15 字數 2989 閱讀 3511

這個小問題還是困擾了我:springmvc無法正確接收前端傳來的引數。而網上的博文解決方法參差不齊或者是有些點忽略了沒講,於是我整理了一下各種形式的解決方法。

1.這個測試內容很簡單,就是前端直接傳來form-data形式,json形式的字串,看看後端接受的結果如何。

2.要善於f12除錯工具(谷歌瀏覽器),檢視究竟前端傳出去的資料形式是什麼。

3.由於本人對前端一無所知,於是只能用上jqery來簡單模擬了。

1.前端**:只傳乙個username

$(".submit").click(function

(); $.ajax(

});});

2.後端**:(@requestparam 指定需要username引數)

@responsebody

public string testform(@requestparam string username)

3.結果:成功

(1)前端傳送:

(2)後端成功輸出test並且成功返回success字元

1.前端**:username和乙個陣列

$(".submit").click(function

(); $.ajax(

});});

2.後端**:(即使把data換成int結果也是一樣)

"/testform", method = requestmethod.post, produces =

@responsebody

public

string testform(@requestparam string username, @requestparam list

<

integer

>

data)

3結果:失敗

(1)報錯:400 bad request

(2)那麼前端傳送的是什麼呢?

可以看到,這是把data拆分了傳送,這肯定是不想要的。我們使用傳遞json形式的字串來傳遞

1.要實現這個功能,後端必須提前做一些準備

步驟說明

引入jackson依賴

為了支援能從前端接受json格式的字串並自動讓spring將資料繫結到我們的引數中

引數使用@requestbody標明引數

至於引數,可以使用map來接收:

"/testmap", method = requestmethod.post, produces =

@responsebody

public

string testmap(@requestbody map

<

string , object>

data)

return

"success";

}也可以自定義dto來接收,注意屬性名字和傳來的鍵名字應該一樣:

public

class testdto

public

void

setdata(int data)

public string getusername()

public

void

setusername(string username)

@override

public string tostring() ';}}

@responsebody

public string testdto(@requestbody testdto testdto)

2.前端也要做出改變

步驟說明

表明傳送json

使用json.stringify()

將資料格式化為json的格式

$(".submit").click(function

(); $.ajax(

});});

3.測試

(1)將上述url分別改為·/estmap,/testdto,結果都是成功

1.上面都是以鍵值對的形式來傳,那麼如果單純傳乙個陣列呢,那就更簡單了。

2.普通陣列

(1)前端

$(".submit").click(function

() });

});

(2)後端

@responsebody

public string testintarray(@requestbody int array)

(3)結果肯定是成功的!

3.物件陣列(考慮乙個user物件,具有username和password兩個資料域)

(1)前端:

$(".submit").click(function

(), ];

$.ajax(

});});

(2)後端:

@responsebody

public string testuserarray(@requestbody user array)

(3)結果當然是成功啦!user物件也可以成功繫結到引數中了!

踏上前端路

前端路 啟程 今天內容不在於分享前段知識,而在於我現在對前端路的一些感觸。想想其實也很可笑,這個的賬號已經建立了2個月,而今天是第一次寫部落格。不知道當初建立賬號是為了應付,還是什麼。但是今天開始寫這個微博我覺得自己不能再以應付的心對待前段,我不能將我對前段的熱情被 應付 兩字所泯滅。必須回歸夢想的...

《當阿呆遇上阿瓜》 當鐵鍬遇上石頭

該片是金 凱瑞成名之前在1994年給影迷奉獻的搞怪喜劇片 阿呆與阿瓜 的續集,說是續集,其實是前傳。新線公司讓我們足足等了10年才看到續集,然而此時影片的主創人員全部更換。少了金 凱瑞,似乎再沒有理由讓我們更期待看到這部影片。可別說筆者心態不正,筆者之所以看此片僅僅因為想看看新線公司是如何挖這塊金礦...

當技術遇上管理

哈佛商學院教授戴維 蓋兒文總結說過 我們的時間應該花在設計和除bug上,而不是不停地與上司打交道,或者監督別人的工作。作為乙個技術人員管理者,要麼你的技術能力徹底讓人信服,要麼你的想法與綜合能力高人一籌,而且還得顯得比手下的人要忙,不然誰心甘情願服從你的安排。很不巧,國內大多數公司裡,有些人的存在,...