什么是javax.ws.rs.core.context? [第3部分]

如何使用@Context批注

什么是javax.ws.rs.core.context的第2部分中 您学习了如何使用@Context批注从SecurityContext类的注入实例检索安全信息,以及如何通过ResourceContext实例使用JAX-RS资源类。

在本文中,您将学习如何将@Context批注与请求配置,提供程序应用程序一起使用。

使用Request类进行请求前提条件处理

java.ws.rs.core软件包提供了一个方便的帮助器类,称为Request ,它有助于预处理请求。 让我们跳入一个例子,看看它是如何工作的。

@GET
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public Response updateEmployee(@PathParam("id") int id,
                               @Context Request request,
                               Employee emp) {

    Employee employee = database.get(id);
    EntityTag tag = new EntityTag(Integer.toString(employee.hashCode()));
    Response.ResponseBuilder builder = request.evaluatePreconditions(tag);

    if (builder != null) {
        // Preconditions not met so return
        return builder.build();
    }

    // Preconditions met so update employee
    employee.salary = emp.salary;

    return Response.noContent().build();
}

资源方法updateEmployee()接受雇员实体作为参数及其ID和Request实例。 该方法从数据库中检索员工,并使用其哈希码生成ETag。 通过将ETag传递给Request实例的validatePreconditions()方法来评估 ETag。 如果不满足先决条件,则方法返回,否则将更新雇员实体,然后返回给调用方。

java.ws.rs.core.Request方法具有以下所示的6种方法:

evaluatePreconditions()
evaluatePreconditions(Date lastModified)
evaluatePreconditions(Date lastModified, EntityTag eTag)
evaluatePreconditions(EntityTag eTag)
String getMethod()
Variant selectVariant(List<Variant> variants)

三个接口:配置,提供程序和应用程序

有三个接口提供有关JAX-RS应用程序运行环境的信息。 它们是javax.ws.rs.core.Applicationjavax.ws.rs.core.Configurationjavax.ws.rs.ext.Providers

Application实例指定JAX-RS应用程序的组件,并通过三种方法提供进一步的数据:

getClasses()
getProperties()
getSingletons()

Configuration实例保存已配置的应用程序上下文的数据,并包含检索与启用属性的功能和组件注册有关的数据的一系列方法。

Providers类提供提供程序实例的运行时查找。 它包含四个getter方法,这些方法返回给定类型的上下文解析器,一个异常类的异常管理器,一个消息正文读取器和一个消息正文写入器。

接下来是什么?

这就是什么是javax.ws.rs.core.context?的第3部分,第4部分 您将学习如何使用@Context注释注入仅在将应用程序部署在servlet容器中时可用的类的实例。 他们是:

  • javax.servlet。 HttpServletRequest
  • javax.servlet。 HttpServletResponse
  • javax.servlet。 ServletConfig
  • javax.servlet。 ServletContext

代码库

这个以及我所有文章的源代码都在readlearncode_articles Github存储库中

翻译自: https://www.javacodegeeks.com/2017/08/javax-ws-rs-core-context-part-3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值