Spring MVC WEB工程中前后台post传值事该不该用@RequestBody?

最近在做一个项目,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的作用是什么。感觉第二种更加的方便,可是我看了一些人说的和一些项目中例子,用的第一种的比较多,这是为什么,百思不得其解?

与后台交互用JSON能统一接口规范,扩展方便

@ResponseBody一般用来将返回值封装为json格式给前台。放在方法前面,将方法的返回值转为json给页面,多用于ajax的数据返回。不应该将它用在参数前转换参数。

ajax,后台要么用@ResponseBody,要么用response.getwriter().write(),二选一,
注意用@ResponseBody,要return,
用response.getwriter().write(), 这条语句后的代码依然可以执行