在Jersey POST处理程序中注入HttpServletRequest

时间:2015-08-21 12:52:11

标签: 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.....").build();

}

这很好但是当我尝试通过POST方法发送它并用@POST注释替换@GET时,我得到参数值null。
请建议我在哪里误会。

1 个答案:

答案 0 :(得分:0)

您无需从请求中获取参数等。 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注释的文档,您可以在此处找到: https://jersey.java.net/documentation/latest/jaxrs-resources.html