您的位置:首页 > 其它

JAX-RS:参数注入

2014-06-05 15:17 204 查看
《JAX-RS3:路径匹配》中,我们已经见过如何使用
@PathParam
@QueryParam
@MatrixParam
分别注入
URI 中的路径参数、矩阵参数和查询参数,以及如何编程访问这些参数。本文介绍表单参数、HTTP 头部参数和 Cookie 参数的注入。


表单参数

HTTP 请求也可以使用提交表单的方式。这时请求方法一般是 POST,当然春哥也无法阻止你用 GET。在前面我们虽然介绍过处理 POST 请求的例子,但那只是利用了 JAX-RS 对 JAXB 的支持,并没有涉及到对具体请求参数的注入。JAX-RS 提供了
@FormParam
注解来注入 POST 请求的参数,例如:
@POST
public Response createMovie(@FormParam("title") String title) {
// 此处省略若干行
}


这儿省略了
@Consumes
注解,JAX-RS 会自动默认为
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
,也就是
application/x-www-form-urlencoded
格式的请求。如果请求格式为
multipart/form-data
,就必须显示指明:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response createMovie(@FormParam("title") String title) {
// 此处省略若干行
}


JAX-RS 还支持文件的上传和下载,以后再介绍。


HTTP 头部参数

注入 HTTP 头部参数简单得不能再简单了:
@GET
@Path("xxx")
@Produces(MediaType.TEXT_PLAIN)
public String xxx(@HeaderParam("User-Agent") String userAgent) {
// 此处省略若干行
}


如果有很多头部参数,为了避免臃肿的参数列表,可以注入一个头部对象,然后编程访问头部参数:
@GET
@Path("xxx")
@Produces(MediaType.TEXT_PLAIN)
public String xxx(@Context HttpHeaders headers) {
// 此处省略若干行
}


Cookie 参数

注入 Cookie 参数同样的简单:
@GET
@Path("xxx")
@Produces(MediaType.TEXT_PLAIN)
public String xxx(@CookieParam("userName") String userName) {
// 此处省略若干行
}


如果希望编程访问,则可以像编程访问那样注入一个
HttpHeaders
对象,然后通过它的
getCookies()
方法来获取所有的 Cookie。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: