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 |
热门文章
优秀文章