当前位置: 首页 > news >正文

软件培训招生兰州网站seo优化公司

软件培训招生,兰州网站seo优化公司,域名不同网站程序相同,成功的网站应该具备哪些要素在使用Java EE开发和发展REST API的过程中#xff0c;有些情况下您希望以更细粒度的方式#xff08;视情况而定#xff09;对传入的HTTP请求#xff08;特别是标头参数#xff09;进行“观察” Servlet过滤器或更具体的ContainerRequestFilters 。 我发现在某些情况下非常… 在使用Java EE开发和发展REST API的过程中有些情况下您希望以更细粒度的方式视情况而定对传入的HTTP请求特别是标头参数进行“观察” Servlet过滤器或更具体的ContainerRequestFilters 。 我发现在某些情况下非常方便的一种可能方式是在我的JAXRS Resource实现中添加CDI拦截器 该拦截器最终可以访问传入的HTTP请求并执行一些“自定义”逻辑。 作为开发人员我可以完全控制–只需添加或删除自定义批注即可在哪个路径哪个路径中拦截请求。随着Java EE 7的引入混合“关注点”变得更加容易因此您可以轻松注入对纯CDI拦截器的HTTP请求 。 在下面我仅记录一个非常简单的示例在该示例中我使用自定义拦截器来“拦截”业务REST API上的HTTP请求以便执行一些非常特定的自定义身份验证逻辑。 我正在检查在我的REST API中发起请求的“用户”是否具有系统定义的某些特定自定义角色。 当然整个示例只是一个示例但是您明白了。 为了引入这样一个组件您需要两件事 引入自定义注释该注释将在定义后用于激活拦截器 实现CDI拦截器。 在其余api的路径/资源上应用注释 注释界面 这里没什么特别的只是一个自定义的运行时批注因此我们可以使用它来“标记” JAXRS API的特定方法。 package gr.javapapo.sample.cdi;/*** Created by a hrefmailto:javapapomac.comjavapapo/a on 24/09/15.*/ import javax.enterprise.util.Nonbinding; import javax.interceptor.InterceptorBinding; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;InterceptorBinding Retention(RetentionPolicy.RUNTIME) Target({ElementType.TYPE, ElementType.METHOD}) public interface CheckRequest {Nonbinding String role() default ADMIN; }拦截器的实现 值得注意的几点 拦截器已使用我们的自定义注释“标记”了-简单 我们Inject HttpServletReqest 我们基于注释详细信息应用一些自定义逻辑我阅读了定义中的所有参数 从请求中我读取了标头并基于注释参数-我做了一些基本的逻辑 package gr.javapapo.sample.cdi;import javax.inject.Inject; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.NotAllowedException;/*** CDI interceptor for the {linkplain CheckRequest} annotation* Created by a hrefmailto:javapapomac.comjavapapo/a on 24/09/15.*/ Interceptor CheckRequest public class CheckRequestInterceptor {InjectHttpServletRequest request;AroundInvokepublic Object checkAccess(InvocationContext ctx) throws Exception {CheckRequest annotation ctx.getMethod().getAnnotation(CheckRequest.class);String role annotation.role();String roleToken request.getHeader(roleToken);if(roleTokennull !role.equals(roleToken)){throw new NotAllowedException(Not allowed if your request does not have the roleToken header or your role is not correct );}return ctx.proceed();} }应用拦截器/注释 最终您可以注释Path JAXRS资源和方法以便“踢”自定义逻辑 Path(/status) public class StatusResource {/*** Returns a simple JSON object, regarding the app status, n** return Response JsonObject*/GETProduces(MediaType.APPLICATION_JSON)CheckRequest(roleADMIN)public Response getStatus() {JsonObject object Json.createObjectBuilder().add(status, Status with CDI internceptor check,It Works at LocalDateTime.now().toString()).build();Response.ResponseBuilder repBuilder Response.ok().entity(object);return repBuilder.build();} 您可以在github上这个非常简单的示例项目中找到所有文件。 翻译自: https://www.javacodegeeks.com/2015/10/cdi-interceptor-of-http-request-and-header-params-simple-example.html
http://www.pierceye.com/news/170503/

相关文章:

  • wordpress站点版权设置晋中建设集团网站
  • 怎么夸一个网站做的好看烟台百度网站推广
  • 佛山市网站建设分站多少钱企业门户账号是什么
  • 大中型网站开发价格铜山区建设局局网站周保春
  • 为什么有人做商城优惠券网站卖科技风格设计网站
  • 企业网站的需求分析是做网站编辑还是做平面设计
  • 超酷 flash 网站淮南网红餐厅
  • 湛江网站建设开发株洲关键词seo优化服务商
  • 女的有没有做网站的十大经典随身空间小说推荐
  • 江西做网站哪家好监理证查询网
  • 北京驾校网站建设网络哪里能接活做网站
  • 建设网站公司排名西宁网站建设优化案例
  • 外贸网站推广有用吗网络服务投诉平台
  • 网站制作价上传下载网站模板
  • 注册网站会员 我们的信息淘宝上可以做网站吗
  • 建筑材料价格查询网站做网站从哪方面入门
  • 百度百科网站怎么做360优化大师app下载
  • 那些网站用不着做优化个人网站设计案例
  • wordpress怎么釆集文章杭州seo百度关键词排名推广
  • 网站地址解析做好系部宣传和网站建设
  • 单页网站建设做淘宝优惠网站步骤
  • apache建立多个网站仿卢松松博客网站源码
  • 婚恋网站上海网络推广需要多少钱
  • 网站建设规划方案ppt模板wap浏览器安卓版
  • 网站关键词优化教程成都展厅设计公司
  • 百度网站排名软件怎么做网站竞价
  • 设计素材网站校园二手市场网站建设
  • 电子产品网站设计asp做微网站
  • 网站内部优化建设温州 网站制作
  • 怎么自己做网站地图网站涉及敏感视频等该怎么做