ajax我經常用到,傳的數據是json數據,json數據又有對象,數組。所有總結下springmvc獲取前端傳來的json數據方式:
1、以RequestParam接收
前端傳來的是json數據不多時:[id:id],可以直接用@RequestParam來獲取值
@Autowired
private AccomodationService accomodationService; @RequestMapping(value = "/update") @ResponseBody public String updateAttr(@RequestParam ("id") int id) { int res=accomodationService.deleteData(id); return "success"; }
2、以實體類方式接收
前端傳來的是一個json對象時:{【id,name】},可以用實體類直接進行自動綁定
@Autowired
private AccomodationService accomodationService; @RequestMapping(value = "/add") @ResponseBody public String addObj(@RequestBody Accomodation accomodation) { this.accomodationService.insert(accomodation); return "success"; }
3、以Map接收
前端傳來的是一個json對象時:{【id,name】},可以用Map來獲取
@Autowired
private AccomodationService accomodationService; @RequestMapping(value = "/update") @ResponseBody public String updateAttr(@RequestBody Map<String, String> map) { if(map.containsKey("id"){ Integer id = Integer.parseInt(map.get("id")); } if(map.containsKey("name"){ String objname = map.get("name").toString(); } // 操作 ... return "success"; }
4、以List接收
當前端傳來這樣一個json數組:[{id,name},{id,name},{id,name},...]時,用List<E>接收
@Autowired
private AccomodationService accomodationService; @RequestMapping(value = "/update") @ResponseBody public String updateAttr(@RequestBody List<Accomodation> list) { for(Accomodation accomodation:list){ System.out.println(accomodation.toString()); } return "success"; }
補充4
SpringMVC接收List型參數
1、controller
@RequestMapping("/postList")
@ResponseBody
public String postList(@RequestBody List<TestL> testL){ System.out.println(testL); return null; }
需要注意點:參數前面必須有注解 @RequestBody
2、ajax請求
var testList=[]; var user={}; user.id=1; user.name='jack'; testList.push(user); var user2={}; user2.id=2; user2.name='tom'; testList.push(user2); $.ajax({ // headers必須添加,否則會報415錯誤 headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, type: 'POST', dataType: "json", //表示返回值類型,不必須 data: JSON.stringify(testList), url: '/test/postList', success: function(){ alert('success'); } });
需要注意點:1、參數是數組類型
2、傳入data時,轉換 JSON.stringify(testList)
3、必須有headers: {
'Accept': 'application/json', 'Content-Type': 'application/json' }
最后再看下TestL類,沒有特別之處(不用包裝)。
public class TestL { private Integer id; private String name; 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; } }