最近在做一个项目,BS架构用的SpringMVC,在做前后台交互时用post将前台的数据发送到后台,对action里面的@RequestBody有点迷糊,求教各位大神。
@RequestMapping(value = "/something", method = RequestMethod.POST)
public void handle(@RequestBody User user, Writer writer) throws IOException {
writer.write(body);
}
这样用AJAX提交时必须是下面这种才能成功
var user={'name':name,'passwd':passwd}
$.ajax({
url : "http://localhost:8080/something",
type : "POST",
contentType: "application/json",
data : JSON.stringify(user),
dataType : "json",
success : function(result) {
},
error:function(msg){
}
});
如果后台action里面取掉@RequestBody,就像下面这样
@RequestMapping(value = "/something", method = RequestMethod.POST)
public void handle( User user, Writer writer) throws IOException {
writer.write(body);
}
前台post数据的时候直接这样就行了
var user={'name':name,'passwd':passwd}
$.ajax({
url : "http://localhost:8080/something",
type : "POST",
data : user,
success : function(result) {
},
error:function(msg){
}
});
这样就可以收到前台传过来的值,但是按照前面的就不行了。
这个里面@RequestBody到底有什么作用,我的本意是后台直接接收一个User对象,如果按照第一种方法,感觉像是我前台先创建一个User对象,然后把它转成了JSON串再post到后台,然后通过@RequestBody再将JSON串转换成User对象,这感觉有点多此一举。而第二种方法感觉就是直接把对象传到后台的。那么这里@RequestBody的作用是什么。感觉第二种更加的方便,可是我看了一些人说的和一些项目中例子,用的第一种的比较多,这是为什么,百思不得其解?