2017-04-21 59 views
0

我阅读了一些教程和在线文档,但仍然无法弄清楚。 我想从jsp表单传递一些参数。 这是我的JS脚本:如何使用Angular 1.5.8和Java Servlet通过POST提交表单?

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> 

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

回答

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;' 
     } 
    }); 
    }; 
} 

所以,你可以得到PARAMATERS:

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

如果你想与解析JSON格式的要求,那么你可以使用杰克逊,GSON等库它将JSON输入转换成Java对象,反之亦然。

+0

谢谢!它为我工作! –