AngularJS http POST到Servlet

编程入门 行业动态 更新时间:2024-10-28 10:30:44
本文介绍了AngularJS http POST到Servlet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我经历了很多StackOverflow的答案并且搜索了很多但仍然无法找到我的帖子请求无效的原因。

I went through a lot of StackOverflow answers and googled a lot but still could not find why my post request is not working.

这是我的jsp:

<div class="container"> <form class="form-signin" ng-controller="MyController"> <h2 class="form-signin-heading">Please sign in</h2> <label for="username" class="sr-only">Username</label> <input type="text" id="username" ng-model="user.name" class="form-control" placeholder="Username" required autofocus> <label for="password" class="sr-only">Password</label> <input type="password" ng-model="user.password" id="password" class="form-control" placeholder="Password" required> <button class="btn btn-lg btn-primary btn-block" ng-click="login()" type="submit">Sign in</button> </form> </div>

这是我的控制器:

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指针异常

I keep getting this Null pointer exception

java.lang.NullPointerException at java.io.StringReader.<init>(StringReader.java:50) at com.google.gson.JsonParser.parse(JsonParser.java:45) at com.zookeeperUI.controller.Login.doPost(Login.java:40)

请告诉我这里我做错了什么。

Please tell me what am I doing wrong here .

推荐答案

您的要求不包含名为data的URL参数,因此request.getParameter(data)返回null并且您获得NullPointerException。

Your request does not contain a URL parameter named "data", therefore request.getParameter("data") returns null and you get the NullPointerException.

您尝试发送Javascript对象通过URL参数,这些参数与非浅层对象不相符。

You try to send a Javascript object via URL parameters which does not go well with non-shallow objects.

我建议将数据作为请求有效载荷发送:

I would recommend to send the data as request payload:

JsonObject obj = (JsonObject) parser.parse(request.getReader());

在客户端,您需要确保将数据作为正确的JSON发送:

On the client you need to make sure that your data is sent as proper JSON:

$http({ method : 'POST', url : 'login', contentType: 'application/json', data : JSON.stringify($scope.user), })...

更多推荐

AngularJS http POST到Servlet

本文发布于:2023-10-12 00:29:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483270.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:http   AngularJS   Servlet   POST

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!