简体   繁体   English

在Jersey POST处理程序中注入HttpServletRequest

[英]Injection of HttpServletRequest in Jersey POST handler

Consider this case:- 考虑这种情况:
I am injecting HttpServletRequest in a Rest Service like 我正在像这样的Rest Service中注入HttpServletRequest

@Context
HttpServletRequest request;

And use it in a method like:- 并以类似以下方法使用它:

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

}

This works fine but when I try to send it through POST method and replace the @GET by @POST annotation, I get the parameter value null. 这可以正常工作,但是当我尝试通过POST方法发送它并用@POST注释替换@GET时,我得到了参数值null。
Please suggest me where I am mistaking. 请给我建议我去哪里。

You do not need to get your parameters etc out of the request. 您不需要从请求中获取参数等。 The JAX-RS impl. JAX-RS展示。 handles that for you. 为您处理。

You have to use the parameter annotations to map your parameters to method parameters. 您必须使用参数注释将参数映射到方法参数。 Casting converting etc. is done automaticly. 转换转换等是自动完成的。

Here your method using three differnt ways to map your parameter: 在这里,您的方法使用三种不同的方式来映射参数:

// 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();
}

Documentation about JAX-RS Annotations from Jersey you can find here: https://jersey.java.net/documentation/latest/jaxrs-resources.html 您可以在以下位置找到来自Jersey的有关JAX-RS注释的文档: https : //jersey.java.net/documentation/latest/jaxrs-resources.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM