springMVC使用jQuery的Ajax

使用@RequestBody 接收前台传递的json 集合数据。

首先:从spring3.1开始只要配置了<mvc:annotation-driven />  就不用再配置其他转换器了。

在前台js中创建JSON字符串。如[{name:'11',age:12},{name:'222',age:15}],一定使用JSON.stringify将该json对象转换为json字符串,因为@RequstBody只接受json字符串。

示例:

$("#saveUser").click(function() {
	var users = [{
		name : '张三',
		age : 18,
		birth : '2014-11-11'
	}, {
		name : '王五',
		age : 18,
		birth : '2014-11-11'
	}, {
		name : '李四',
		age : 18,
		birth : '2014-11-11'
	} ];
	$.ajax({
		type : 'POST',
		data:JSON.stringify(users),
		contentType : 'application/json',
		dataType: 'json',
		url : 'user/saveJsonUser.do',
		success : function(data) {
			alert("OK");
		},
		error : function(e) {
			alert("error");
		}
	});
});

使用Ajax提交数据需要注意的是:contentType : 'application/json',dataType: 'json',这两个属性必须这样设置。

controller中的处理方法的形参需要添加注解@RequestBody 而且形参必须是数组或者list

如:@RequestBody User[] users

示例:

/**
 * 使用@RequestBody接受前台传递的一组json数据
 * @param users
 * @return
 */
@RequestMapping(value="/saveJsonUser.do",method=RequestMethod.POST)
public String saveJsonUser(@RequestBody User[] users){
	for (User user2 : users) {
		System.out.println(user2);
	}
	System.out.println(users);
	return "saveUser";
}

使用@ResponseBody返回指定形式的返回值。

返回值类型前添加@ResponseBody注解之后,spring不会再对返回的url进行解析而是直接将返回的对象转化成对应的字符串形式放入respons的流中输出到客户端

如果返回的为字符串,则直接将该字符串输出到客户端

示例:

/**
 * 使用@ResponseBody返回普通字符串。
 * @param name
 * @return
 */
@RequestMapping(value="/checkName.do")
public @ResponseBody String checkName(String name){
	name = "userName is:"+name;
	return name;
}

如果是其他形式的对象,则spring会自动将这些对象转换为对应的json形式的字符串,然后将字符串输出到客户端。

示例:

/**
 * 使用@ResponseBody返回一个对象集合。
 * @param name
 * @return
 */
@RequestMapping(value="/getUsers.do")
public @ResponseBody List<User> getUsers(){
	List<User> us = new ArrayList<User>();
	us.add(new User("张三", 12, new Date()));
	us.add(new User("张四", 13, new Date()));
	us.add(new User("张五", 14, new Date()));
	return us;
}
/**
 * 使用@ResponseBody返回一个对象。
 * @param name
 * @return
 */
@RequestMapping(value="/getUser.do")
public @ResponseBody User getUser(){
	return new User("老黑",45,new Date());
}

相关推荐