Jersey 开发RESTful(九)Jersey中的注入

本文介绍了如何在Jersey中使用@Context注入特殊资源,如UriInfo、请求头信息、请求处理信息和Servlet相关对象。还讲解了子资源定位器的概念,展示了如何创建和使用子资源类。此外,讨论了资源类的生命周期,并提供了关于在哪些位置使用注入的建议。
摘要由CSDN通过智能技术生成

【原创文章,转载请注明原文章地址,谢谢!】

在本节中,我们会针对前面两篇Jersey文章的资源,请求参数绑定等做一些补充说明。

@Context注入特殊资源

在SpringMVC中,让我们影响深刻的有一个标签是@Autowire。能够注入一些非常特殊的对象,比如ApplicationEventPublisher,在Web环境下能注入ServletContext等等,在SpringMVC中,还能在每一个Controller方法参数中注入HttpServletRequest,HttpSession等特殊对象,其实在Jersey中也可以实现,需要用到@Context注解。

获取UriInfo
/**
 * 使用@Context获取请求上下文内容
 * 
 * @param ui
 * @return
 */
@GET
@Path("/formui")
public String formPojoParam(@Context UriInfo ui) {
    MultivaluedMap<String, String> qps = ui.getQueryParameters();
    MultivaluedMap<String, String> pps = ui.getPathParameters();
    System.out.println(qps);
    System.out.println(pps);
    return "success";
}

在JAX-RS中,一个UriInfo对象封装了应用相关信息和本次请求相关信息。并在UriInfo中提供了一些有用的方法:
比如针对请求GET localhost:8082/webapi/param/formui?name=haha

//获取资源路径:param/formui
    System.out.println(ui.getPath());
    //获取完整请求路径:http://localhost:8082/webapi/param/formui
    System.out.println(ui.getAbsolutePath());
    //获取请求根路径:http://localhost:8082/webapi/
    System.out.println(ui.getBaseUri());
    //获取匹配请求的资源类[cn.wolfcode.jersey._04parameters.ParameterRest@73ea3756]
    System.out.println(ui.getMatchedResources());
    //获取尝试匹配的资源路径[param/formui, param]
    System.out.println(ui.getMatchedURIs());
    //获取完整请求URIhttp://localhost:8082/webapi/param/formui?name=haha
    System.out.println(ui.getRequestUri());
    //获取请求参数列表{name=[haha]},类型为MultivaluedMap<String, String>
    System.out.println(ui.getQueryParameters());
    //获取路径参数列表{}
    System.out.println(ui.getPathParameters());
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值