Java 在Jersey POST处理程序中注入HttpServletRequest

Java 在Jersey POST处理程序中注入HttpServletRequest,java,rest,jersey,Java,Rest,Jersey,考虑这种情况:- 我正在Rest服务中注入HttpServletRequest,如 @Context HttpServletRequest request; 并以如下方式使用:- @GET @Path("/simple") public Response handleSimple() { System.out.println(request.getParameter("myname")); return Response.status(200).entity("hello...

考虑这种情况:-
我正在Rest服务中注入HttpServletRequest,如

@Context
HttpServletRequest request;
并以如下方式使用:-

@GET
@Path("/simple")
public Response handleSimple() {
    System.out.println(request.getParameter("myname"));
    return Response.status(200).entity("hello.....").build();

}
这很好,但是当我尝试通过POST方法发送它并替换@GET by@POST注释时,我得到的参数值为null。

请告诉我哪里弄错了。

您不需要从请求中获取参数等。JAX-RS impl。帮你处理

必须使用参数注释将参数映射到方法参数。铸造、吹炼等都是自动完成的

在这里,您可以使用三种不同的方法映射参数:

// As Pathparameter
@POST
@Path("/simple/{myname}")
public Response handleSimple(@PathParam("myname") String myName) {
    System.out.println(myName);
    return Response.status(200).entity("hello.....").build();
}

// As query parameter
@POST
@Path("/simple")
public Response handleSimple(@QueryParam("myname") String myName) {
    System.out.println(myName);
    return Response.status(200).entity("hello.....").build();
}

// As form parameter
@POST
@Path("/simple")
public Response handleSimple(@FormParam("myname") String myName) {
    System.out.println(myName);
    return Response.status(200).entity("hello.....").build();
}
关于Jersey的JAX-RS注释的文档可以在这里找到:
您不需要从请求中获取参数等。JAX-RS impl。帮你处理

必须使用参数注释将参数映射到方法参数。铸造、吹炼等都是自动完成的

在这里,您可以使用三种不同的方法映射参数:

// As Pathparameter
@POST
@Path("/simple/{myname}")
public Response handleSimple(@PathParam("myname") String myName) {
    System.out.println(myName);
    return Response.status(200).entity("hello.....").build();
}

// As query parameter
@POST
@Path("/simple")
public Response handleSimple(@QueryParam("myname") String myName) {
    System.out.println(myName);
    return Response.status(200).entity("hello.....").build();
}

// As form parameter
@POST
@Path("/simple")
public Response handleSimple(@FormParam("myname") String myName) {
    System.out.println(myName);
    return Response.status(200).entity("hello.....").build();
}
关于Jersey的JAX-RS注释的文档可以在这里找到:

如果我有超过20个这样的参数,该怎么办?你可以用@BeanParameter建立非常复杂的参数,或者在参数名中使用像[]brakets这样的老技巧,让它们作为一种数组进行传输,也可以映射到数组上。创造性地找到解决方案。JAX-RS中的注释有无限的可能性。如果我有超过20个这样的参数呢?您可以使用@BeanPareter构建非常复杂的参数,或者在参数名称中使用像[]brakets这样的老技巧,让它们作为一种数组进行传输,也可以映射到数组上。创造性地找到解决方案。JAX-RS中的注释有无限的可能性。