java类接收不到参数_angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法...

写此文的背景:在工作学习使用angular的$http.post()提交数据时,后台接收不到参数值,于是查阅了相关资料,寻找解决办法。

前端:html,jquery,angular

后端:java,springmvc

一、平常使用的post提交和接收方式

前端使用jquery提交数据。

$.ajax({

url:'/carlt/loginForm',

method:'POST',

data:{"name":"jquery","password":"pwd"},

dataType:'json',

success:function(data){//...

}

});

后端java接收:

@Controllerpublic classUserController {

@ResponseBody

@RequestMapping(value="/loginForm",method=RequestMethod.POST)publicUser loginPost(User user){

System.out.println("username:"+user.getName());

System.out.println("password:"+user.getPassword());returnuser;

}

}

model(不要忘记get、set方法):public classUser {privateString name;privateString password;private intage;}

后台输出结果正确。

二、使用angularJs的post方法提交

var app = angular.module('myApp', []);

app.controller('formCtrl', function($scope,$http) {

$scope.login= function() {

$http({

url:'/carlt/loginForm',

method:'POST',

data: {name:'angular',password:'333',age:1}

}).success(function(){

console.log("success!");

}).error(function(){

console.log("error");

})

};

});

后台输出结果为空:username:null,password:null

三、解决angular提交post问题

A、改前端

B、改后台Java(在User前加上@RequstBody,因为angular提交的是json对象)

@Controllerpublic classUserController {

@ResponseBody

@RequestMapping(value="/loginForm",method=RequestMethod.POST)publicUser loginPost(@RequestBody User user){

System.out.println("username:"+user.getName());

System.out.println("password:"+user.getPassword());returnuser;

}

}

@RequestBody

注解:

i) @RequestBody用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;

ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

四、解决了angular问题之后,发现jquery按照原来的方式提交post请求会报错(错误码415)。

如下方式可以解决jquery提交问题:

$.ajax({

url:'/carlt/loginForm',

method:'POST',

contentType:'application/json;charset=UTF-8',

data:JSON.stringify({"name":"jquery","password":"pwd"}),//json对象转json字符串:JSON.stringify(jsonObj);

dataType:'json',

success:function(data){//...

}

});

还需特别注意:Java接收参数最好为类对象(如本文中的User对象),如果用分参数格式,会获取到一个json字符串,还需额外的解析处理,使用不方便。

本文参考地址:http://www.cfei.net/archives/24102

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值