什么是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 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部分]相关推荐
- 什么是javax.ws.rs.core.context? [ 第1部分 ]
如何使用@Context批注 JAX-RS API提供了一种非常方便的机制,可以将各种有用的资源(例如HTTP标头)注入到端点中. @Context注释是一个通用注释,它注入以下对象的实例: Http ...
- 什么是javax.ws.rs.core.context? [ 第2部分 ]
如何使用@Context批注 在什么是javax.ws.rs.core.context? 您学习了如何使用@Context批注从HttpHeaders类的注入实例中检索HTTP标头信息,以及如何从Ur ...
- 什么是javax.ws.rs.core.context? [第5部分]
如何使用@Context批注 在什么是javax.ws.rs.core.context的第4部分中? 您学习了如何使用@Context批注将HttpServletResponse和HttpServle ...
- 什么是javax.ws.rs.core.context? [第4部分]
如何使用@Context批注 在什么是javax.ws.rs.core.context的第3部分中? 您学习了如何在请求和配置,提供程序和应用程序实例中使用@Context批注. 在本文中,您将学习如 ...
- 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 ...
- Couldn‘t find grammar element for class javax.ws.rs.core.Response
测试hive on tez,启动顺序如下: 启动hadoop hive --service metastore hiveserver2 starthis yarn timelineserver hiv ...
- 【registry】registry AbstractMethodError javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws
1.概述 在 [registries]registrie rest-service idea 无法引入的背景下,以及 [registry]NoSuchFieldError: INCLUDE_ALL 以 ...
- javax maven项目缺少_Eclipse项目中的Maven:软件包javax.ws.rs不存在
在Eclipse中,当我转到myProject->右键单击-> Run As-> Maven构建时,控制台中出现多个错误,概述某些软件包不存在,例如: javax.ws.rs doe ...
- 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 ...
最新文章
- [转]自定义hadoop map/reduce输入文件切割InputFormat
- 中国电子学会图形化四级编程题:成语接龙
- GROMACS运行参数之em_real.mdp文件详解
- Django环境的搭建以及最简示例
- LUA upvalue使用陷阱一例
- UILabel常用属性
- fv-15php1c 安装图,SQLite - C/C++接口 API(一)
- PHP汉字转化为拼音
- cad命令栏还原默认_将CAD恢复到默认界面的两种方法,来看看吧
- 初次使用Fleck+redis订阅发布实现学习小demo
- 2063:【例1.4】牛吃牧草
- 图片下载器爬虫 ItemLoader
- vue页面分享微信朋友圈
- 职业规划,如何月入1万、3万、5万、10万?
- JS逆向之巨量创意signature签名
- 点云笔记01---点云基本概念
- python3性能还低吗_Python 2 vs Python 3,究竟谁是性能之王?
- c++ map 查找性能测试
- E.03.29 Afraid of Needles? Don’t Let It Keep You From a Covid-19 Vaccine.
- PPT文件怎么转换成Word?这个方法可以轻松实现