Java语言拦截机制之实现原理

来源 :科技风 | 被引量 : 0次 | 上传用户:zhuchonge
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:针对程序设计过程中拦截机制的应用问题,讨论了拦截机制的实现原理,阐述拦截机制的适用场景;同时重点分析Java语言中的二种实现方式,并对比二种方式各自的优缺点,最后指出了拦截机制的重要作用。
  关键词:拦截;过滤器;AOP代理;映射
  拦截机制在各种面向对象编程语言中均有极其重要的位置,不同语言中的实现方式有所不同,即使在同一语言中也有多种实现方式。Java语言中的拦截机制可以通过过滤器、Struts框架拦截器、Spring框架AOP代理等方式去进行实现。
  1 拦截机制原理分析
  拦截组件是一个服务器端的构件,它可以截取客户端的请求与响应信息,以便查阅、提取或操作客户机和服务器之间正在交换的数据,其原理如图1所示。首先,各种形式的客户端向应用服务发送请求;其次,各种请求在到达真正目标服务前会被拦截组件所截获,并交由请求拦截方法处理,处理完毕后放行,请求才能到达真正的目标;第三,目标服务业务逻辑处理完成后,向客户端发送响应结果;第四,目标服务返回的影响结果同样会被拦截组件所截获,并交由响应拦截方法处理,处理完毕才真正返回到客户端。
  拦截机制主要应用于以下场景:1)日志模块:通过拦截用户的每一个操作,可记录其行为特征及操作过程,以便于将来的审计、检查、核对;2)权限模块:通过截获用户的每一个请求,检查其合法性,是否拥有所请求的数据资源或权限资源,以对请求对行权限控制;3)资源管理模块:通过统一拦截控制进行资源初始化或释放及相关管理工作,如用户退出系统时进行公共拦截并释放相关资源;4)事务模块:在请求到达目标对象前截获并开启一个相关事务,在请求结束后,同样截获响应并提交或回滚事务,从而达到事务管理的目的。
  2 Java的實现方式
  Java编程语言中,拦截机制的实现方式多种多样,在各种不同的应用框架中都有自己的一套相应机制,下面主要对二种常见的、基本的实现方式进行分析、论述。
  2.1 Servlet过滤器定义
  过滤器(Filter)是Java拦截中最普通的一种实现方式,是SUN公司于2000年在Servlet2.3中新增加的功能,此种拦截方式适合于所有没有特殊要求web的应用系统中。
  在Filter接口中有三个抽象方法:init方法在容器启动时被调用,负责资源初始化;doFilter方法是请求的拦截方法,负责请求数据合法性的检查;destroy方法在容器关闭时调用,负责资源的销毁、释放。自定义类需实现Filter接口,并在工程web.xml映射文件中配置好相应拦截。配置代码如下所示:
  <!--拦截器定义 -->
  
  authFilter
  <!--自定义拦截类 -->
  com.DemoFilter
  

  <!--拦截规则定义 -->
  
  authFilter
  <!--表示拦截所有请求 -->
  /*
  

  2.2 Strust框架自定义拦截器
  拦截器是Struts2框架的核心,拦截器可以让程序员在Action类被执行的前后嵌入相关的业务代码。Struts2拦截器的实现相对简单,请求到达Struts2的中央处理器FilterDispatcher时,会读取struts.xml配置文件中的拦截器配置,然后实例化相关对象,并按一定的规则顺序进行调用,此种拦截方式适合于用Struts框架构建的应用系统中。
  自定义拦截类需实现Interceptor接口,接口有同样有:init、destory、intercept三个方法。请求到达Action的前后均会被intercept截获,通过参数ActionInvocation可取得对应的Action实例,并通过参数的实例对象中的invoke方法可以控制请求的流向。其相关配置如下代码所示:
  <!-- 拦截器的定义 -->
  
  <!-- 自定义拦截类 -->
  
  

  
  <!-- 拦截器在Action中的引用 -->
  
  /main.jsp
  

  3 结语
  拦截机制是Java语言的一个重要功能特征,其有助于提升面向横截面编程的能力,增强系统的健壮性,同时Java语言中存在多种不同的拦截实现方式,各自适应不同的应用场景,拦截机制如果应用不当导致性能低下、效率不佳等问题,因而不能滥用。
  参考文献:
  [1] 阳瑞发.基于拦截器的Web服务会话技术研究[J].制造业自动化,2015,37(20):54-55.
  [2] 董慧慧.基于struts2拦截器的操作日志系统设计[J].计算机光盘软件与应用,2012(4):141-142.
  [3] 王涛涛,李晓禹,施炜利.Struts2拦截器控制页面访问权限的设计与实现[J].计算机与现代化,2009(1):32-33,37.
其他文献
很久以前,我国的无人驾驶汽车并不普及,主要原因或许可以概括为高端的电子信息技术使得人们无法有相应的资金支持。无人驾驶系统的重要组成部分,就是人工智能,即人工智能是无
根据大型多功能演播厅布光的现状及存在的主要问题,采用CAN总线结合单片机技术研制出了大型多功能演播厅布光控制系统,大大简化了现场布线,降低了整个系统的成本.该系统能实现对1
研究了稀土La和Ce的加入量和不同的热处理工艺对ZL201合金组织的影响.实验结果表明,随着稀土La和Ce质量分数的增加,合金的晶粒尺寸得到了明显的细化,黑色片状析出相T(Al12CuMn
目的研究髋关节置换术应用等比重罗哌卡因复合舒芬太尼腰硬联合麻醉的临床意义。方法 58例行全髋关节置换术患者,根据编号奇偶性方法分为A组和B组,各29例。A组采用等比重罗哌
目的研究健脾法治疗对血脂的影响。方法 60例甘油三酯为1.71~3.00 mmol/L的血脂代谢异常患者,予自拟代谢调节I号+生活方式重塑+运动锻炼治疗6个月,观察治疗前后糖化血红蛋白的
摘 要:为了提升基于浮点运算的任务上下文切换性能,本文提出了一种高效的浮点上下文切换算法;基于某型嵌入式实时操作系,设计实现了所提出的浮点上下文切换算法,并进行任务上下文切换的性能对比实验;实验结果表明,本文提出的浮点上下文切換算法可以有效地提高混合环境下任务切换的效率,显著减小浮点任务上下文切换的时间消耗。  关键词:浮点任务;上下文切换;性能对比  中图分类号:TP311 文献标识码:A  一
本文首先分析了城市规划中的市政燃气管网规划设计原则,对安全性、先进性以及整体性原则进行了详细的阐述,然后说明了城市规划中市政燃气管网规划设计中需要考虑的因素,指出
目的 研究分析护理干预对小儿支气管哮喘患儿恢复情况的影响,探讨有利于快速康复的最佳护理方式和手段。方法 58例小儿支气管哮喘患儿,随机分为对照组和实验组,每组29例。对
目的分析舒适护理在肛肠病手术治疗过程中的临床应用价值。方法 288例肛肠病手术患者,按照患者入院顺序的不同分为观察组和对照组,每组144例。对照组患者采用常规护理,观察组