2017-04-21 54 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

謝謝!它爲我工作! –