如何使用Angular 1.5.8和Java Servlet通过POST提交表单?

时间:2017-04-21 15:15:50

标签: javascript java angularjs jsp servlets

我阅读了一些教程和在线文档,但仍然无法弄明白。 我想从jsp表单中传递一些参数。 这是我的js脚本:

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

//add dependecies
FormController.$inject = ['$scope', '$http'];

function FormController($scope, $http) {
    $scope.blob = {};
    $scope.submitForm = function() {
        $http({
            method : 'POST',
            url : '/javaAngularJS',
            data : $scope.blob,
            headers: {
                'Content-Type': 'application/json; charset=utf-8'
            }
        });
    };
}

这是我的表格:

<div class="site-body" ng-app="myApp">
    <form ng-controller="FormController" ng-submit="submitForm()">
    <p>Blob Key: <input type='input' name='blob-key' ng-model="blob.key"></p>
    <p>Ancestor: <input type='text' name='ancestor' ng-model="blob.ancestor"></p>
<input type="submit" class="btn btn-primary" value="Submit">
</div>

我有一个带有Post方法的Servlet类添加到我的web.xml中。我能够将Angular和AJAX调用与其他东西一起使用但我坚持这一点。 如何在Servlet中正确检索我的表单参数?例如,我想用System.out.prinltn打印参数。

1 个答案:

答案 0 :(得分:0)

您可以使用httpParamSerializerJQLike服务来序列化数据。

(从{key: "asd", ancestor: "asd"}ancestor=asd&key=asd

FormController.$inject = ['$scope', '$http', '$httpParamSerializerJQLike'];

function FormController($scope, $http, $httpParamSerializerJQLike) {
  $scope.blob = {};
  $scope.submitForm = function() {
    $http({
       method : 'POST',
       url : 'javaAngularJS', // use relative
       data: $httpParamSerializerJQLike($scope.blob),
       headers: {
         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8;'
       }
     });
   };
}

所以你可以得到参数:

String key = request.getParameter("key");
String ancestor = request.getParameter("ancestor");

如果要使用JSON格式解析请求,则可以使用Jackson,Gson等库将JSON输入转换为Java对象,反之亦然。