Java AngularJS-如何使用$http.post将多个参数传递给服务器类

Java AngularJS-如何使用$http.post将多个参数传递给服务器类,java,angularjs,web-services,Java,Angularjs,Web Services,我不熟悉AngularJS和web服务。 我正在做一个程序,从用户->[姓名和年龄]获取值,并将这些值插入oracle数据库。我只能插入一个值。我使用$http.post传递多个值的搜索结果不是很好。 如果有人能帮忙,那就太有帮助了。 这是密码 客户端代码 <html> <title>My AngularJS App</title> <body ng-app="myApp" ng-controller="DBCtrl"> <scrip

我不熟悉AngularJS和web服务。 我正在做一个程序,从用户->[姓名和年龄]获取值,并将这些值插入oracle数据库。我只能插入一个值。我使用$http.post传递多个值的搜索结果不是很好。 如果有人能帮忙,那就太有帮助了。 这是密码

客户端代码

<html>

<title>My AngularJS App</title>  

<body ng-app="myApp" ng-controller="DBCtrl">
<script type ="text/javascript" src="https://ajax.googleapis.co/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<form ng-submit="insertData()">
Student name: <input type = "text" ng-model="name" >
Student age: <input type= "text" ng-model="age">
<br>
<input type ="submit" value="INSERT">

</form>
<p>{{msg}}</p>

<script>

var app = angular.module('myApp',[]);
app.controller('DBCtrl', function($scope,$http){

$scope.insertData = function(){

    alert($scope.name);
    $http.post('rest/DB/add',$scope.name)
    //$http.get("rest/DB/extract")
    .success(function(){
        $scope.msg="DATA INSERTED";

    })
    }
    });


    </script>

    </body>
    </html>
package com.ustri.DBman;

@Path("/DB")
public class DBManager {

@POST
@Path("/add")
@Produces(MediaType.TEXT_HTML)
public void addDetails(String sname,String sage){
    System.out.println("IN add");

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");          
        //step3 create the statement object  
        System.out.println("Connection established successfully");
        PreparedStatement stmt=con.prepareStatement("insert into studreg values(?,?)");  
        System.out.println(sname+"+"+sage);
        stmt.setString(1,sname);  
        stmt.setString(2,sage);

        int i=stmt.executeUpdate();  
        System.out.println(i+" records inserted");  
        con.close(); 
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }  


    }

    }
使用此代码,我只能插入单个值$scope.name。 如何修改代码以通过$http.post将$scope.name和$scope.age参数传递给服务器

使用此代码,我只能插入单个值$scope.name。 如何修改代码以同时传递$scope.name和$scope.age 参数通过$http.post发送到服务器

默认情况下,
$http
post/get方法通过将数据序列化为JSON并使用
“application/JSON”
内容类型发布来转换请求。
虽然您似乎希望使用
应用程序/x-www-form-urlencoded”
内容类型发布数据。

您可以指定
“application/x-www-form-urlencoded”
内容类型,并在发送数据之前创建格式良好的数据(在传输值之间添加
分隔符)

或者你可以做得更简单。
您可以发送包含这两个信息的JS对象

替换

$http.post('rest/DB/add',$scope.name);

并根据需要更改rest控制器

替换

public void addDetails(String sname,String sage){

其中,
Details
将两个传输值作为字段

public class Details{
  private String name;
  private String age;

  // and add getters and setters if required by your JSON/Java mapper.
}

角度应用程序通常发送JSON,并接收JSON。当然,您可以发送其他内容,也可以接收HTML,但这使它变得非常困难。为什么不发送和接收JSON?@JBNizet是的。。。这是所有必要的。。。
public void addDetails(Details details){
public class Details{
  private String name;
  private String age;

  // and add getters and setters if required by your JSON/Java mapper.
}