就是在后台接收前端传的JSON串,其中包含数组类型的数据。例如传一个user用户列表,后台用List来接收。
其实有多种方法都可以实现,大概就是JSON方式,和非JSON的key/value那种方法。但是后台前辈告诉我,要考虑前台不是所有都会这两种传参的方式,而且用JSON传参,前端肯定是会而且总是不容易出错的。由此写下来供温习
后台定义的用来接收用户类型的vo类
/**
* 用来测试JSON传递list型的数据vo类
*
*/
public class UserVo {
private List<User> userList;
/**
* @return the userList
*/
public List<User> getUserList() {
return userList;
}
/**
* @param userList the userList to set
*/
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
其中User的定义就不详举了,大致包含以下几个字段
- name:姓名
- gender:性别
- address:地址
controller
/**
* 测试是否能正确接收到JSON格式的user的list
* @param userVo
* @return
*/
@RequestMapping("/queryUsers.action")
@ResponseBody
public User UserQuery(@RequestBody UserVo userVo,HttpServletRequest request) {
List<User> list = userVo.getUserList();
for(User user:list) {
System.out.println(user);
}
return null;
}
其中使用了@RequestBody注解,来解析JSON串
模拟前台传参
function helloworld(){
$.ajax({
type:'post',
url:'${pageContext.request.contextPath}/queryUsers.action',
data:JSON.stringify({"userList":[
{"name":"李四","gender":"女","address":"泵山坡"},
{"name":"张三","gender":"女","address":"呼呼坡"},
{"name":"赵武","gender":"男","address":"落枫坡"},
{"name":"孙柳","gender":"男","address":"破破坡"}]
}),
contentType:"application/json;charset=UTF-8",
success:function(data){
alert(data);
}
});
}
其中要求"userList"
对应Vo的定义好的类变量,name
等对应User的字段
输出结果
控制台输出
李四 [gender: 女 btd: null address: 泵山坡 ]
张三 [gender: 女 btd: null address: 呼呼坡 ]
赵武 [gender: 男 btd: null address: 落枫坡 ]
孙柳 [gender: 男 btd: null address: 破破坡 ]
重写了User的toString方法,绑定的结果一目了然
当然前端的客户端,就只是执行了一次空的alert()