网站建设技术百科,网站制作小常识,企业网站建设价钱,温州小学网站建设如何使用Context批注 在什么是javax.ws.rs.core.context#xff1f; 您学习了如何使用Context批注从HttpHeaders类的注入实例中检索HTTP标头信息#xff0c;以及如何从UriInfo实例中检索URI信息#xff0c;例如URI参数和变量。 在本文中#xff0c;您将学习如何将Context批… 如何使用Context批注 在什么是javax.ws.rs.core.context 您学习了如何使用Context批注从HttpHeaders类的注入实例中检索HTTP标头信息以及如何从UriInfo实例中检索URI信息例如URI参数和变量。 在本文中您将学习如何将Context批注与SecurityContext和ResourceContext类一起使用。 使用SecurityContext保护RESTful Web服务 为了保护RESTful端点可以使用javax.ws.rs.core.SecurityContext接口该接口提供对有关请求的安全性相关信息的访问。 SecurityContext实例使您可以访问以下与安全性有关的信息 用于保护资源的身份验证类型例如CLIENT_CERT_AUTH FORM_AUTH和BASIC_AUTH 用发出请求的用户名填充的java.security.Principal实例 如果请求是使用HTTPS发出的 如果用户包含在给定角色中 要进入SecurityContext您可以使用Context批注将实例注入实例变量setter方法或方法参数中。 让我们看一个检查当前用户是否处于来宾角色的示例。 Path(/security-context)
public class SecurityContextResource {GETProduces(MediaType.APPLICATION_JSON)public Response sayHello(final Context SecurityContext securityContext) {return Response.ok(securityContext.isUserInRole(guest)).build();}} 此代码段显示使用Context批注将SecurityContext实例注入到securityContext参数中。 然后它检查用户是否具有来宾角色并将结果返回给调用方。 对http// localhost8080 / rest-server / security-context的调用将返回true或false具体取决于用户对来宾角色的参与。 在这个简单的示例中由于未配置任何角色它应该返回false。 使用ResourceContext检索JAX-RS javax.ws.rs.container.ResourseContext实例提供对其他资源类的实例的访问。 它有两种方法 getResource方法用于检索资源或子资源initResource 用于初始化资源或子资源。 让我们创建一个示例该示例检索将两个数字相加的资源。 首先您需要计算器资源该资源具有一个将两个值相加的资源方法。 Path(/calculator)
public class CalculatorResource {GETPath(add)Produces(MediaType.APPLICATION_JSON)public Integer add(QueryParam(x) int x, QueryParam(y) int y) {return x y;}} 这是一个具有单个方法的简单资源类该方法将两个查询参数加在一起并返回结果。 尽管可以通过URL http// localhost8080 / rest-server / calculator / addx 10y 50进行访问 但我们不会直接使用此资源而是将其定位在另一个资源中方法并使用其添加方法。 Path(/resource-context)
public class ResourceContextResource {GETPath(/add)Produces(MediaType.APPLICATION_JSON)public Response get(final Context ResourceContext resourceContext, final Context UriInfo uriInfo) {final CalculatorResource calculatorResource resourceContext.getResource(CalculatorResource.class);int x Integer.valueOf(uriInfo.getQueryParameters().getFirst(x));int y Integer.valueOf(uriInfo.getQueryParameters().getFirst(y));return Response.ok(calculatorResource.add(x, y)).build();}} 在此资源类中有一个资源方法以ResourceContext和UriInfo作为参数。 ResourceContext用于检索CalculatorResource.class 而UriInfo实例用于检索两个查询参数。 然后调用CalculatorResource类实例上的add方法并将两个参数传递给该方法。 方法的结果将被发送回调用方。 要激发此方法请调用URL http// localhost8080 / rest-server / resource-context / addx 10y 50 。 接下来是什么 这就是什么是javax.ws.rs.core.context的第3部分的第2部分。 您将学习如何使用Context注释注入Request ConfigurationProviders和Application类。 代码库 这个以及我所有文章的源代码都在readlearncode_articles Github存储库中。 翻译自: https://www.javacodegeeks.com/2017/08/javax-ws-rs-core-context-part-2.html