Angular http POST到Servlet
我经历了很多StackOverflow的答案并且搜索了很多,但仍然无法找到我的post请求无效的原因。
这是我的jsp:
这是我的控制器:
app.controller('MyController', function($scope, $http) { $scope.login = function() { console.log($scope.user); $http({ method : 'POST', url : 'login', data : $scope.user, headers: { 'Content-Type': 'application/json' } }).success(function(data) { console.log(data); }).error(function(data) { console.log(data); }); console.log("POST done"); }; });
而我的servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("inside do POST"); Gson gson = new Gson(); JsonParser parser = new JsonParser(); JsonObject obj = (JsonObject) parser .parse(request.getParameter("data")); Iterator it = (Iterator) obj.entrySet(); while (it.hasNext()) { System.out.println(it.next()); } System.out.println("over"); }
我一直得到这个Null指针exception
java.lang.NullPointerException at java.io.StringReader.(StringReader.java:50) at com.google.gson.JsonParser.parse(JsonParser.java:45) at com.zookeeperUI.controller.Login.doPost(Login.java:40)
请告诉我这里我做错了什么。
您的请求不包含名为“data”的URL参数,因此request.getParameter(“data”)返回null并且您获得NullPointerException。
您尝试通过URL参数发送Javascript对象,这与非浅层对象不相符。
我建议将数据作为请求有效负载发送:
JsonObject obj = (JsonObject) parser.parse(request.getReader());
在客户端上,您需要确保将数据作为正确的JSON发送:
$http({ method : 'POST', url : 'login', contentType: 'application/json', data : JSON.stringify($scope.user), })...
我认为你应该发送数据
$http({ method : 'POST', url : 'login', data : {data: $scope.user}, headers: { 'Content-Type': 'application/json' } }).success(function(data) { console.log(data); });
注意data : {data: $scope.user}
您正在使用POST
请求,您的数据将在请求正文中发送 – 而不是作为参数 。 您需要使用request.getReader()
读取内容。
// example using the javax.json.stream package JsonParser parser = Json.createParserFactory().createParser(request.getReader());
- 如何使用AngularJS $ http发送multipart / form-data
- 为SPA前端配置Spring Boot
- Java Server – 使用POST发送Push到Google Firebase Cloud
- 无法从JSON String实例化类型的值; 没有单字符串构造函数/工厂方法
- 带有Spring Security的AngularJS Web应用程序
- 如何使用angular js spring mvc上传多部分文件
- 尝试使用ng-file-upload上传Spring中的许多文件时,清单
- 如何组合现有的Google App引擎后端和AngularJS Web应用程序?
- 通过Javascript缓存与在Server中设置HTTPResponse头之间有什么区别?