angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法
2017-04-19 14:43
971 查看
本文地址:http://www.cnblogs.com/jying/p/6733408.html 转载请注明出处;
写此文的背景:在工作学习使用angular的$http.post()提交数据时,后台接收不到参数值,于是查阅了相关资料,寻找解决办法。
前端:html,jquery,angular
后端:java,springmvc
一、平常使用的post提交和接收方式
前端使用jquery提交数据。
后端java接收:
后台输出结果正确。
二、使用angularJs的post方法提交
后台输出结果为空:username:null,password:null
三、解决angular提交post问题
A、改前端
参考地址:http://www.cnblogs.com/humaotegong/articles/5641943.html
B、改后台Java(在User前加上@RequstBody,因为angular提交的是json对象)
注解:
i) @RequestBody用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
四、解决了angular问题之后,发现jquery按照原来的方式提交post请求会报错(错误码415)。
如下方式可以解决jquery提交问题:
还需特别注意:Java接收参数最好为类对象(如本文中的User对象),如果用分参数格式,会获取到一个json字符串,还需额外的解析处理,使用不方便。
本文参考地址:http://www.cfei.net/archives/24102
写此文的背景:在工作学习使用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接收:
@Controller public class UserController { @ResponseBody @RequestMapping(value="/loginForm",method=RequestMethod.POST) public User loginPost(User user){ System.out.println("username:"+user.getName()); System.out.println("password:"+user.getPassword()); return user; } } model(不要忘记get、set方法): public class User { private String name; private String password; private int age; }
后台输出结果正确。
二、使用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、改前端
参考地址:http://www.cnblogs.com/humaotegong/articles/5641943.html
B、改后台Java(在User前加上@RequstBody,因为angular提交的是json对象)
@Controller public class UserController { @ResponseBody @RequestMapping(value="/loginForm",method=RequestMethod.POST) public User loginPost(@RequestBody User user){ System.out.println("username:"+user.getName()); System.out.println("password:"+user.getPassword()); return user; } } @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
相关文章推荐
- 解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
- 解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
- 解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
- 解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
- 解决springMCV后台接收不到AngularJ的$http.post参数的方法
- 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
- 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
- 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
- struts2 数据传输问题---“POST方式提交数据量过大,在后台接收不到数据”问题的解决
- struts2 数据传输问题---POST方式提交数据量过大,在后台接收不到数据
- AngularJs中$http发送post或者get请求,SpringMVC后台接收不到参数值的解决办法
- angular的post请求,SpringMVC后台接收不到参数值的解决办法(参考加自创)
- HttpClient4.5.2版本中POST提交中文参数时乱码问题解决方法
- Http Post请求提交json格式数据工具类,解决请求参数中文乱码问题
- POST方法提交参数后台getparameter获取不到的问题!
- 解决vue中post方式提交数据后台无法接收的问题
- AngularJs中$http发送post或者get请求,SpringMVC后台接收不到参数值的解决办法
- ajax post 提交中文java后台获取参数出现乱码解决方法
- Post提交大数据量,接收端接收不到数据的解决方法
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题