Spring mvc3的ajax
在Springmvc3中,响应、接受JSON都十分方便。
使用注解@ResponseBody可以将结果(一个包含字符串和JavaBean的Map),转换成JSON。
使用@RequestBody注解前台只需要向Controller提交一段符合格式的JSON,Spring会自动将其拼装成bean。
Spring这个转换是靠org.codehaus.jackson这个组件来实现的,所有需要引入jackson-core-asl和org.codehaus.jackson两个jar包
Html代码
<title>SpringMVC</title>
<scripttype="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<scripttype="text/javascript"src="http://jquery-json.googlecode.com/files/jquery.json-2.2.min.js"></script>
<scripttype="text/javascript"src="<%=request.getContextPath()%>/scripts/user/index.js"></script>
</head>
<body>
<divid="info"></div>
<formaction="add"method="post"id="form">
编号:<inputtype="text"name="id"/>
姓名:<inputtype="text"name="username"/>
年龄:<inputtype="text"name="age"/>
<inputtype="button"value="提交"id="submit"/>
</form>
</body>
</html>
Js代码
//将一个表单的数据返回成JSON对象
$.fn.serializeObject=function(){
varo={};
vara=this.serializeArray();
$.each(a,function(){
if(o[this.name]){
if(!o[this.name].push){
o[this.name]=[o[this.name]];
}
o[this.name].push(this.value||'');
}else{
o[this.name]=this.value||'';
}
});
returno;
};
$(document).ready(
function(){
jQuery.ajax({
type:'GET',
contentType:'application/json',
url:'user/list',
dataType:'json',
success:function(data){
if(data&&data.success=="true"){
$('#info').html("共"+data.total+"条数据。<br/>");
$.each(data.data,function(i,item){
$('#info').append(
"编号:"+item.id+",姓名:"+item.username
+",年龄:"+item.age);
});
}
},
error:function(){
alert("error")
}
});
$("#submit").click(function(){
varjsonuserinfo=$.toJSON($('#form').serializeObject());
alert(jsonuserinfo);
jQuery.ajax({
type:'POST',
contentType:'application/json',
url:'user/add',
data:jsonuserinfo,
dataType:'json',
success:function(data){
alert("新增成功!");
},
error:function(data){
alert("error")
}
});
});
});
Java代码
@Controller
@RequestMapping("/user")
publicclassDemoController{
privateLoggerlogger=LoggerFactory.getLogger(DemoController.class);
@RequestMapping(value="/list",method=RequestMethod.GET)
@ResponseBody
publicMap<String,Object>getUserList(){
logger.info("列表");
List<UserModel>list=newArrayList<UserModel>();
UserModelum=newUserModel();
um.setId("1");
um.setUsername("sss");
um.setAge(222);
list.add(um);
Map<String,Object>modelMap=newHashMap<String,Object>(3);
modelMap.put("total","1");
modelMap.put("data",list);
modelMap.put("success","true");
returnmodelMap;
}
@RequestMapping(value="/add",method=RequestMethod.POST)
@ResponseBody
publicMap<String,String>addUser(@RequestBodyUserModelmodel){
logger.info("新增");
logger.info("捕获到前台传递过来的Model,名称为:"+model.getUsername());
Map<String,String>map=newHashMap<String,String>(1);
map.put("success","true");
returnmap;
}
}
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo