当前位置: 首页 > 面试题库 >

AngularJS HTTP POST到Servlet

丘华翰
2023-03-14
问题内容

我经历了很多答案,并且在Google上搜索了很多,但仍然找不到为什么我的帖子请求不起作用的原因。

这是我的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指针异常

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)

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


问题答案:

您的请求不包含名为“ 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),
    })...


 类似资料:
  • 我正在运行一个JSP调用servlet1的应用程序。此servlet1在内部调用servlet2以获取一些数据。Servlet1自己计算一些数据,从servlet2获得一些数据,并将其发送回JSP。 但我得到了以下错误: HTTP状态500- 类型异常报告 留言 说明服务器遇到内部错误(),无法完成此请求。 例外情况 JAVAlang.IllegalStateException:提交响应后无法转发

  • 我研究一个简单的问题已经有相当长的时间了。在包括这个网站在内的许多论坛上搜索了很多,但仍然无法解决这个问题。因此请求您的帮助。 我有一个带有文本区域和提交按钮的JSP页面。 在Servlet类中,我执行以下操作- 因此,在我点击提交按钮后,我的请求将转到servlet,并从servlet返回到原始的jsp,但我无法用servlet输出填充文本区域。我已经尝试了很多方法,就像我在互联网上发现的那样,

  • 我是一名学习使用jsp和Servlet构建Web应用程序的学生。一个月以来,我的Web应用程序项目一直运行良好,但今天它的行为突然变得奇怪了。当我提交jsp页面时,它无法找到我的servlet。我已经使用servlet注释来映射请求。 以下是我的JSP:- 以下是我的servlet:- 以下是我的控制台日志:-

  • 问题内容: 我有这个InputStream: 如何将其转换为ServletInputStream? 我努力了: 但不起作用。 编辑: 我的方法是这样的: 我正在尝试将所有请求都转换为小写。 问题答案: 试试这个代码。

  • 我有这个输入流: 如何将其转换为ServletInputStream? 我试过: 但不工作。 编辑: 我的方法是这样的: 我正在尝试将我的所有请求转换为小写。

  • 我希望我的这个登录页面加载两次,即第一次用户输入username和password,然后从servlet获得响应,然后它将被重定向到带有“messages”的登录jsp页面。 我有两个按钮用于登录和注销。这个脚本可以像我试过的那样通过使用count变量加载两次吗?任何其他方法也将是首选。 附注:我试过使用和但它们不起作用。 login.jsp:-