如何使用@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 returnreturn builder.build();}// Preconditions met so update employeeemployee.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.Application , javax.ws.rs.core.Configuration和javax.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

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

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

    如何使用@Context批注 JAX-RS API提供了一种非常方便的机制,可以将各种有用的资源(例如HTTP标头)注入到端点中. @Context注释是一个通用注释,它注入以下对象的实例: Http ...

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

    如何使用@Context批注 在什么是javax.ws.rs.core.context? 您学习了如何使用@Context批注从HttpHeaders类的注入实例中检索HTTP标头信息,以及如何从Ur ...

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

    如何使用@Context批注 在什么是javax.ws.rs.core.context的第4部分中? 您学习了如何使用@Context批注将HttpServletResponse和HttpServle ...

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

    如何使用@Context批注 在什么是javax.ws.rs.core.context的第3部分中? 您学习了如何在请求和配置,提供程序和应用程序实例中使用@Context批注. 在本文中,您将学习如 ...

  5. Couldn‘t find grammar element for class javax.ws.rs.core.Response(没有解决)

    复现: $HADOOP_HOME/bin/yarn timelineserver 12月 22, 2020 3:21:49 下午 com.sun.jersey.server.wadl.generato ...

  6. Couldn‘t find grammar element for class javax.ws.rs.core.Response

    测试hive on tez,启动顺序如下: 启动hadoop hive --service metastore hiveserver2 starthis yarn timelineserver hiv ...

  7. 【registry】registry AbstractMethodError javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws

    1.概述 在 [registries]registrie rest-service idea 无法引入的背景下,以及 [registry]NoSuchFieldError: INCLUDE_ALL 以 ...

  8. javax maven项目缺少_Eclipse项目中的Maven:软件包javax.ws.rs不存在

    在Eclipse中,当我转到myProject->右键单击-> Run As-> Maven构建时,控制台中出现多个错误,概述某些软件包不存在,例如: javax.ws.rs doe ...

  9. flink启动yarn-session报错javax/ws/rs/ext/MessageBodyReader

    问题复现: /home/appleyuchi/bigdata/flink-1.10.1/bin/yarn-session.sh 报错如下: 2020-06-07 19:05:01,358 ERROR ...

最新文章

  1. [转]自定义hadoop map/reduce输入文件切割InputFormat
  2. 中国电子学会图形化四级编程题:成语接龙
  3. GROMACS运行参数之em_real.mdp文件详解
  4. Django环境的搭建以及最简示例
  5. LUA upvalue使用陷阱一例
  6. UILabel常用属性
  7. fv-15php1c 安装图,SQLite - C/C++接口 API(一)
  8. PHP汉字转化为拼音
  9. cad命令栏还原默认_将CAD恢复到默认界面的两种方法,来看看吧
  10. 初次使用Fleck+redis订阅发布实现学习小demo
  11. 2063:【例1.4】牛吃牧草
  12. 图片下载器爬虫 ItemLoader
  13. vue页面分享微信朋友圈
  14. 职业规划,如何月入1万、3万、5万、10万?
  15. JS逆向之巨量创意signature签名
  16. 点云笔记01---点云基本概念
  17. python3性能还低吗_Python 2 vs Python 3,究竟谁是性能之王?
  18. c++ map 查找性能测试
  19. E.03.29 Afraid of Needles? Don’t Let It Keep You From a Covid-19 Vaccine.
  20. PPT文件怎么转换成Word?这个方法可以轻松实现

热门文章

  1. 成为更优秀的程序员:退后一步看问题
  2. Oracle入门(十四.6)之使用标量数据类型
  3. Oracle入门(十二F)之表分区
  4. 【Android布局】控件布置
  5. 如何求解两个数的最大公约数
  6. myeclipse 2016 ci3破解教程(含软件下载)
  7. 考研英语二大纲22年考研
  8. 轩辕剑之天之痕1-5java_轩辕剑游戏 轩辕剑1到5全系列下载
  9. java通过poi读取excel中的日期类型数据或自定义类型日期
  10. pivotal_Spring Data Pivotal Gemfire教程