ml4233792 2017-07-13 14:21 采纳率: 0%
浏览 3278

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

  • 写回答

3条回答 默认 最新

  • byds520 2017-07-14 03:34
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集