Struts2 什么是拦截器?

1 Struts2拦截器概念

拦截器是Struts2的核心。拦截器是一个类似于过滤器的类。在执行action的处理方法前会 先执行拦截器,然后再执行action的处理方法,然后再执行拦截器,再响应。

Struts2的所有功能都是由拦截器来实现的,而拦截器在Struts2中时可以自由配置和自由装配的。所以Struts2的所有功能也都是可插拔的。并且struts2中的拦截器是可以自定义的,所以如果Struts2没有提供项目所需的功能时,可以通过自定义拦截器来实现。

2 Struts2内置拦截器

Struts2框架自身定义了许多拦截器,每个拦截器都完成不同的功能:

拦截器别名 作用
alias 对于HTTP请求包含的参数设置别名
autowiring  将某些JavaBean实例自动绑定到其他Bean对应的属性中。有点类似Spring的自动绑定,在Spring部分会详细说明
chain 在Web项目开发中,以前使用Struts开发的时候经常碰到两个Action互相传递参数或属性的情况。该拦截器就是让前一个Action的参数可以在现有Action中使用
conversionError 从ActionContext中将转化类型时候发生的错误添加到Action的值域错误中,在检验的时候经常被使用来显示类型转化的错误信息
cookie 从Struts2.0.7版本开始,可以把cookie注入Action中可设置的名字或值中
createSession 自动创建一个HTTP的 Session, 尤其是对需要HTTP的Session的拦截器特别有用。比如下面介绍的TokenInterceptor
debugging 用来对在视图间传递的数据进行调试
execAndWait 不显示执行Action, 在视图上显示给用户的是一个正在等待的页面,但是Action其实是在背后正在执行着。该拦截器尤其在对进度条进行开发的时候特别有用
exception 将异常和Action返回的result相映射
fileUpload 支持文件上传功能的拦截器
i18n 支持国际化的拦截器
logger 拥有日志功能的拦截器
modelDriven Action执行该拦截器的时候,它可以从一个scope范围检索和存储model值,通过调用setModel方法去设置model的值
params 将HTTP请求中包含的参数值设置到Action中
prepare 假如Action继承了Preparable接口,则会调用prepare方法
staticParams 对于在struts.xml文件中的Action中设置的参数设置到对应的Action中
scope 在session或者application范围中设置Action的状态
servletConfig 该拦截器提供访问包括HttpServletRequest和HttpServletResponse对象的Map方法
timer 输出Action的执行时间
token 避免重复提交的校验拦截器
tokenSession 和token拦截器类似,但它还能存储提交的数据到session里
validation 运行在action-validation.xml文件中定义的校验规则。(数据校验部分)
workflow 在Action中调用validate检验方法。如果Action有错误则返回到 input 视图
store 执行校验功能的时候,该拦截器提供存储和检索Action的所有错误和正确信息的功能
checkbox 视图中如果有checkbox存在的情况,该拦截器自动将unchecked的checkbox当做一个参数(通常为false)记录下来。这样可以用一个隐藏的表单值来记录所有未提交的checkbox,而且缺省unchecked的checkbox值是布尔类型的,如果视图中checkbox的值设置的不是布尔类型,它就会被覆盖成布尔类型的值
profiling 通过参数来激活或者不激活分析检测功能,前提示Web项目是在开发模式下。(涉及到调试和性能检验时使用)
roles 进行权限配置的拦截器,如果登录用户拥有相应的权限才去执行某一特定的Action

 

热门文章

优秀文章