激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - spring mvc利用ajax向controller傳遞對(duì)象的方法示例

spring mvc利用ajax向controller傳遞對(duì)象的方法示例

2020-12-02 10:44raledong Java教程

這篇文章主要給大家介紹了關(guān)于spring mvc利用ajax向controller傳遞對(duì)象的相關(guān)資料,文中通過(guò)示例代碼將步驟介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。

前言

最近因?yàn)楣ぷ鞯男枰趯懸粋€(gè)基于springmvc+spring+mybatis的項(xiàng)目,其中涉及用ajaxcontroller發(fā)送數(shù)據(jù)的功能。因?yàn)椴幌胧褂胹pring的form標(biāo)簽,所以想看看有沒(méi)有方法將ajax中的json數(shù)據(jù)直接轉(zhuǎn)化為controller方法中的對(duì)象接收并處理。以下將逐漸介紹各種不同情況下傳遞json數(shù)據(jù)并封裝的方法,下面話不多說(shuō),一起來(lái)看看詳細(xì)的介紹:

基礎(chǔ)類型

如果傳遞的json數(shù)據(jù)為基礎(chǔ)類型(Int,String等)的話,則只需要用@RequestParam標(biāo)注方法中的參數(shù)就行了。

ajax代碼

?
1
2
3
4
5
6
7
8
9
$.ajax({
 url : "someurl",
 type : "POST",
 dataType : "JSON",
 data : {"name":"test", "password":"testpassword"},
 success : function (data) {
  console.log(data)
 }
})

java代碼

?
1
2
3
4
@RequestMapping("someurl")
public @ResponseBody SomeData basicType(@RequestParam String name, @RequestParam String password){
 //具體方法
}

在這里@ResponseBody說(shuō)明返回的是一個(gè)對(duì)象。@RequestParam的用法還很多,具體可以去參考springmvc的文檔

簡(jiǎn)單的對(duì)象類型

簡(jiǎn)單的對(duì)象類型是指,在對(duì)象中不包含復(fù)雜的數(shù)據(jù)結(jié)構(gòu)類似于list,map等。在這里可以使用標(biāo)簽@ModelAttribute來(lái)直接將JSON數(shù)據(jù)封裝成對(duì)象。

假設(shè)我們有一個(gè)用戶對(duì)象,用戶的屬性包括name,age

?
1
2
3
4
5
public class User{
 private String name;
 private int age;
 //getters and setters
}

ajax傳輸?shù)臄?shù)據(jù)如下

?
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({
 url : "someurl",
 type : "POST",
 dataType : "JSON",
 data : {
  'name : 'test',
  'age' : 10
 },
 success : function (data) {
  console.log(data)
 }
})

controller中的代碼如下

?
1
2
3
4
@RequestMapping("someurl")
public @ResponseBody SomeData objects(@ModelAttribute User user){
//具體方法
}

springmvc 暫時(shí)不支持接收并生成多個(gè)modelAttribute

數(shù)組類型

有些情況下,可能需要傳遞一組相同類型的數(shù)據(jù),比如添加一組用戶的信息。這是可以通過(guò)ajax傳遞一個(gè)數(shù)組給controller方法。具體情況可以參考這個(gè)回答

這個(gè)回答給的非常的詳細(xì)具體,需要補(bǔ)充的是,接收端的數(shù)據(jù)結(jié)構(gòu)無(wú)論是List<T>或是T[]都可以成功獲得數(shù)組數(shù)據(jù)。

復(fù)雜的對(duì)象

但是上面的方法有一個(gè)問(wèn)題,就是只能接收純數(shù)組數(shù)據(jù)。假設(shè)一個(gè)對(duì)象,比如用戶,該用戶下的屬性除了包含name(名稱),age(年齡)之外,還有一個(gè)聯(lián)系方式屬性contacts(List<String>) ,如何才能將既包含基本類型又包含數(shù)組類型的JSON數(shù)據(jù)直接封裝成對(duì)象呢?這里就需要標(biāo)簽@RequestBody

ajax代碼如下,需要注意的是,這里需要用JSON.stringfy()方法將json數(shù)據(jù)轉(zhuǎn)化成字符流,添加至requestbody中。且在ajax方法中必須指明contentTypedataType屬性。

?
1
2
3
4
5
6
7
public class User{
 private String name;
 private int age;
 private List<String> contacts;
 //或是 private String[] contacts;
 //getters and setters
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.ajax({
 var user = {
  'name' : 'test',
  'age ' : 10,
  'contacts' : ['12313','123213123']
 }
 url : "someurl",
 type : "POST",
 dataType : "JSON",
 contentType:"application/json",
 data : JSON.stringify(user),
 success : function (data) {
  console.log(data)
 }
})

java代碼如下

?
1
2
3
4
@RequestMapping("someurl")
public @ResponseBody SomeData complicateObject(@RequestBody User user){
 //方法詳情
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

原文鏈接:https://segmentfault.com/a/1190000009600375

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品一区中文字幕 | 欧美 亚洲 激情 | 亚洲日本韩国精品 | 欧美成人精品一区二区男人小说 | 久久精品一区视频 | 国产精品美女一区二区 | 一级免费大片 | 一级毛片在线免费观看视频 | 久久精品视频在线免费观看 | 国产一区视频在线免费观看 | 在线成人一区 | 国产一级免费电影 | 色人阁五月天 | free国产hd老熟bbw | 精品国产一区二区三区久久久 | 久久久国产电影 | 强伦女教师视频 | 欧美国产精品久久 | 国人精品视频在线观看 | 国产激情精品一区二区三区 | 在线91视频 | 亚洲精久久 | 精品成人av一区二区三区 | 一本色道久久综合狠狠躁篇适合什么人看 | 免费欧美一级视频 | 最新国产毛片 | 香蕉视频1024 | 亚洲免费毛片基地 | 成人性视频在线 | 国产噜噜噜噜久久久久久久久 | 亚洲aⅴ免费在线观看 | 青青国产在线视频 | 精品亚洲午夜久久久久91 | 久草视频国产在线 | pornoⅹxxxxhd麻豆 | 91黄瓜视频 | 欧美日韩亚洲成人 | 国产精品岛国久久久久久久 | 亚洲国产午夜精品 | 一级做a爱片毛片免费 | 国产毛片在线高清视频 |