我阅读了一些教程和在线文档,但仍然无法弄明白。 我想从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打印参数。
答案 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对象,反之亦然。