动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Struts2拦截器及其工作原理

08-07 17:26 190浏览
举报 T字号
  • 大字
  • 中字
  • 小字

拦截器(Interceptor),是Struts2框架的核心功能之一Struts 2是一个基于MVC设计模式的开源框架,Struts2拦截器主要完成请求参数的解析、将页面表单参数赋给值栈中相应属性、执行功能检验、程序异常调试等工作弄懂Struts2拦截器及其工作原理java程序必修课。

Struts2拦截器是一种可插拔策略,实现了面向切面的组件开发,当需要扩展功能时,只需要提供对应拦截器,并将它配置在Struts2容器中即可,如果不需要该功能时,也只需要在配置文件取消该拦截器的设置,整个过程不需要用户添加额外的代码。拦截器中更为重要的概念即拦截器栈(Interceptor Stack),拦截器栈就是Struts2中的拦截器按一定的顺序组成的一个线性链,页面发出请求,访问Action对象或方法时,栈中被设置好的拦截器就会根据堆栈的原理顺序的被调用。当我们要引用多个拦截器的时候,只要把拦截器都放在栈里头,在外边引用拦截器即可

过滤器调度程序必须做的事情有很多,而没有驻留在过滤器调度程序类内部的代码往往会被模块化成一系列拦截器。拦截器可以通过编辑Struts配置文件而被插入或拔出。表格列出了Struts的默认拦截器。括号里部分是在配置文件里注册该拦截器时用的名字,在使用一个拦截器之前必须先在配置文件里注册它,例如,Alias拦截器的注册名是alias。

Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源;否则,系统直接转入登陆页面。对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用。因为大部分Action里的权限检查代码都大同小异,故将这些权限检查的逻辑放在拦截器中进行将会更加优雅。

Struts 2拦截器在Action执行前后进行拦截, 围绕着Action的执行而执行, 比如实现日志管理拦截器和安全功能的拦截器, 在系统的Action关联了拦截器, 添加到Action执行过程中以后, 系统的整个执行流程就变为:记录日志、执行安全检测、执行Action、执行安全检测、记录日志, 在执行的过程中, 每一个拦截器类的拦截方法决定是传递请求, 还是终止请求。

在实际的Web应用软件项目中, 与项目的业务逻辑相关的通用功能需要开发人员自定义拦截器实现。比如Web应用软件都要涉及到权限控制这部分, 当用户访问系统的受保护资源时, 需要先检查用户是否已经登录, 以及是否有权限访问, 可以由拦截器截获用户请求, 判断用户是否已经登录。

Struts2的所有功能都是由拦截器来完成的,这足以证明Struts 2拦截器的重要地位。Struts 2拦截器是我们不得不掌握的学习Struts 2的关键,当然也是我们学习Struts 2的开,想要更深入学习的小伙伴可以观看本站Struts 2专题课程,你想学的这里全都有!

0人推荐
共同学习,写下你的评论
0条评论
天鹏桑
程序员天鹏桑

12篇文章贡献57547字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消