Jersey框架常用注解5:参数获取注解

JAX-RS标准支持丰富的参数获取方式,可以获取查询参数、表单参数、请求头、文件、路径等各种类型的参数。

@QueryParam

HTTP请求路径中的?k1=v1&k2=v2这样的键值对称为查询参数,@QueryParam注解用来获取HTTP地址中的查询参数。
举例:假设HTTP访问地址为http://localhost/user?name=Michale&age=120,则在方法中可获取查询参数。

@Path("/user")
public class UserRes {
    //获取用户列表
    @GET
    @Path("")
    @Produces(MediaType.APPLICATION_JSON)
    public String getAll(@QueryParam("name") String name,
                         @QueryParam("age") int age) {
        System.out.println(name);
        System.out.println(age);
        return "name: " + name + " , age: " + age;
    }
}

@FormParam

如果HTTP是以application/x-www-form-urlencoded的方式提交表单,则使用@FormParam注解获取表单参数。

    //创建用户
    @PUT
    @Path("")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces(MediaType.APPLICATION_JSON)
    public String add(@FormParam("name") String name,
                      @FormParam("age") int age) {
        return "name: " + name + " , age: " + age;
    }

Jersey框架常用注解5:参数获取注解_第1张图片

@CookieParam

获取http请求头中cookie中的参数值。

@HeaderParam

获取http请求头中的参数值。

@FormDataParam

通常在上传文件的时候,需要@FormDataParam。客户端提交form(MIME为multipart/form-data)的方式提交表单,服务端使用@FormDataParam来解析form表单中的参数。
需要注意的是,@FormDataParam需要jersey-media-multipart依赖库的支持。在maven中需加入:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.19</version>
</dependency>

文件上传示例代码

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) {
    String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();
    // save it
    writeToFile(uploadedInputStream, uploadedFileLocation);
    String output = "File uploaded to : " + uploadedFileLocation;
    return Response.status(200).entity(output).build();
}

@MatrixParam

获取请求URL中的参数中的键值对,必须使用“;”作为键值对的分隔符,比如/person/1;id=1;name=bella;age=22。此注解用法比较奇特,在项目中并不推荐使用。

@PathParam

该注解定义路径的参数信息,用于指定的URI路径参数,@PathParam 用在接收请求的方法的参数上。
关于@PathParam注解,请点击链接查看。
Jersey框架常用注解2:@Path和@PathParam注解

@DefaultValue

以上大多数参数都可以和@DefaultVaule一起使用,为参数指定一个默认值,当请求中不包括该参数时候使用这个默认值。

@Path("/user")
public class UserRes {
    //获取用户列表
    @GET
    @Path("")
    @Produces(MediaType.APPLICATION_JSON)
    public String getAll(@QueryParam("name") String name,
                         @QueryParam("age") @DefaultValue("10") int age) {
        System.out.println(name);
        System.out.println(age);
        return "name: " + name + " , age: " + age;
    }
}

你可能感兴趣的:(Jersey,Jersey系列:实践全干货)