我如何通过两个参数@Path和@PathParam

时间:2018-01-29 11:40:16

标签: javascript java angularjs spring spring-mvc

我正在尝试使用java angular js和mysql创建身份验证方法。我知道如何传递一个参数,但我无法通过两个你能帮助我吗。

这是我的DAO方法:

proc export data=sashelp.class (keep =  name
                                        sex
                                        NonExistingVar)
   outfile="/stuff/proc_test.csv"
   dbms=csv
   replace;
run;

这是我的控制器方法,我想通过2个参数:

public Client authentifier(int numerocompte,String mdp) {

            System.out.println(numerocompte + mdp);

            try {
            Connection con = Connexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from client WHERE numerocompte = ? AND mdp = ?");
            ps.setInt(1, numerocompte);
            ps.setString(2, mdp);
            Client e = new Client();
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {

                e.setIdclient(rs.getInt("idclient"));
                e.setNomcomplet(rs.getString("nomcomplet"));
                e.setMail(rs.getString("mail"));
                e.setNumerocompte(rs.getInt("numerocompte"));
                e.setMdp(rs.getString("mdp"));

            }
            rs.close();
            return e;

            }catch (Exception e) {
                System.out.println("Erreur avec  authentifier() -->" + e.getMessage());
                return (null);
            }

        }

这里是角js线,我也将通过2个参数:

@GET
    @Path("authentifier/{numerocompte}{mdp}")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Client authentifier(@PathParam("numerocompte , mdp") int numerocompte, String mdp) {
        ClientDao dao = new ClientDao();
        System.out.println(numerocompte);
        return dao.authentifier(numerocompte,mdp);
    }

3 个答案:

答案 0 :(得分:2)

所需的只是控制器方法签名中的附加@PathParam("mdp")注释。

@GET
@Path("authentifier/{numerocompte}/{mdp}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Client authentifier(@PathParam("numerocompte") int numerocompte, 
                           @PathParam("mdp") String mdp) {

    ClientDao dao = new ClientDao();
    System.out.println(numerocompte);
    return dao.authentifier(numerocompte,mdp);
}

此外,请确保您指定路径。在您的示例中,您声明了

@Path("authentifier/{numerocompte}{mdp}")

JAX-RS将无法知道numerocompte的开始位置和结束位置。像这样将它们彼此分开

@Path("authentifier/{numerocompte}/{mdp}")

然后

$http.get('rest/client/authentifier/'+$scope.nouveauClient.numerocompte+'/'+$scope.nouveauClient.mdp).then(function(data){
             alert(data.data);
})

答案 1 :(得分:2)

为每个方法参数

添加@PathParam("pathParamName")
public Client authentifier(
    @PathParam("numerocompte") int numerocompte, 
    @PathParam("mdp") String mdp
)

并确保遵循指定的路径。

答案 2 :(得分:1)

您忘记将numerocomptemdp之间的斜杠放在@Path注释中。

您的authentifier功能应如下所示

@GET
@Path("authentifier/{numerocompte}/{mdp}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Client authentifier(@PathParam("numerocompte") int numerocompte, @PathParam("mdp") String mdp) {
    ...
}

在Angular代码中也是如此

$http.get('rest/client/authentifier/'+$scope.nouveauClient.numerocompte+'/'+$scope.nouveauClient.mdp).then(function(data) { alert(data.data); })