AngularJS $ http params vs data - 如何获取'数据'在服务器上?

时间:2014-05-17 20:50:18

标签: angularjs servlets

背景:使用AngularJS表单将数据发布到Java servlet。

假设我的$ scope中有一些模型,来自表单,名为firstName:

控制器中的

$ http请求:

$http({
    method: 'POST',
    url: '/CustomerTrackerApp/JSONManager', 
    params: { firstName: $scope.firstName }
}).then(function(response) {
     alert(response.data);
});
Servlet中的

doPost()方法:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String firstName = request.getParameter("firstName");
    out.println("From Servlet: " + firstName);
}

这成功提醒"来自Servlet:{在表单中输入的名称}"

我的问题是params: { firstName: $scope.firstName, }会导致字段显示在网址中,所以我想使用:

$http({
    method: 'POST',
    url: '/CustomerTrackerApp/JSONManager', 
    data: { firstName: $scope.firstName }
}).then(function(response) {
     alert(response.data);
});

如何在doPost()中获取firstName的值data: { firstName: $scope.firstName }并将其保存在数组中?

非常感谢您的帮助,我已经谷歌搜索了一段时间,无法找到答案。

1 个答案:

答案 0 :(得分:3)

找到解决方案。在java servlet中,doPost()使用了InputStreamReader和BufferedReader:

InputStreamReader isr = new InputStreamReader(request.getInputStream());
BufferedReader in = new BufferedReader(isr);
String line = in.readLine();

现在,您可以使用JSONObject轻松地将数据作为字符串进行操作:

JSONObject json;

try {

    json = new JSONObject(line); 
    String jsonString = json.toString();
    String[] names = JSONObject.getNames(json);

    for (int i=0 ; i < names.length ; i++) {
        System.out.println(names[i] + " : " + json.getString(names[i]));
    }

} catch (JSONException e) { e.printStackTrace(); }