拦截器的作用说明

struts2默认各个拦截器的作用说明
2010-07-23 15:25
(1)在xml配置文件中配置拦截器和拦截器栈都是以“<interceptors>”开头,以“</interceptors>”结尾。

(2)配置拦截器的格式如上面代码所示以“<interceptor/>”格式显示,其中两个属性name是拦截器名字,另一个是对应的类路径,因为之前也已经说过其实拦截器也是一个普通的Java对象。

(3)拦截器栈的格式是以“<interceptor-stack >”开头,以“</interceptor-stack>”结尾。其中属性name是拦截器栈名字。在“<interceptor-stack >”和“</interceptor-stack>”之间可以设置拦截器。如代码所示格式为“<interceptor-ref />”,其中name属性也是拦截器名字。如果系统运行拦截器栈都是按照拦截器栈中定义的拦截器先后顺序执行拦截器。请读者仔细查看那个基础栈配置,其中配置的拦截器都是在xml文件中定义的拦截器。

注意:拦截器栈中不单单可以配置拦截器,它甚至还可以配置拦截器栈。比如在“validationWorkflowStack” 拦截器栈中就配置了“basicStack”拦截器栈。这样的话,配置的子拦截器栈中的拦截器也会被执行。这就类似于父集合和子集合的概念。

(4)针对struts-default.xml文件中各个拦截器配置,笔者一一做介绍,因为如果使用Struts2在Web项目开发中,这些拦截器都是默认缺省的会被执行的。因此了解一下Struts2底层的拦截器到底实现什么功能对开发人员来说是很有帮助的。

l alias:对于HTTP请求包含的参数设置别名。

l autowiring:将某些JavaBean实例自动绑定到其他Bean对应的属性中。有点类似Spring的自动绑定,在Spring部分会详细说明。

l Chain:在Web项目开发中,以前使用Struts开发时候经常碰到两个Action互相传递参数或属性的情况。该拦截器就是让前一Action的参数可以在现有Action中使用。

l conversionError:从ActionContext中将转化类型时候发生的错误添加到Action的值域错误中,在校验时候经常被使用到来显示类型转化错误的信息。

l cookie:从Struts2.0.7版本开始,可以把cookie注入Action中可设置的名字或值中。

l createSession:自动创建一个HTTP的Session,尤其是对需要HTTP的Session的拦截器特别有用。比如下面介绍的TokenInterceptor。

l debugging:用来对在视图间传递的数据进行调试。

l ExecAndWait:不显式执行Action,在视图上显示给用户的是一个正在等待的页面,但是Action其实是在“背后”正在执行着。该拦截器尤其在对进度条进行开发的时候特别有用。

l exception:将异常和Action返回的result

相映射。

l fileUpload:支持文件上传功能的拦截器。

l i18n:
支持国际化的拦截器。

l logger:拥有日志功能的拦截器。

l modelDriven:Action执行该拦截器时候,可以将getModel方法得到的result值放入值栈中。

l scopedModelDriven:执行该拦截器时候,它可以从一个scope范围检索和存储model值,通过调用setModel方法去设置model值。

l params:将HTTP请求中包含的参数值设置到Action中。

l prepare:假如Action继承了Preparable接口,则会调用prepare方法。

l staticParams:对于在struts.xml文件中Action中设置的参数设置到对应的Action中。

l scope:在session或者application范围中设置Action的状态。

l servletConfig:该拦截器提供访问包含HttpServletResquest和HttpServletResponse对象的Map的方法。

l timer:输出Action的执行时间。

l token:避免重复提交的校验拦截器。

l tokenSession:和token拦截器类似,但它还能存储提交的数据到session里。

l validation:运行在action-validation.xml(校验章节将介绍)文件中定义的校验规则。

l workflow:在Action中调用validate校验方法。如果Action有错误则返回到input视图。

l store:执行校验功能时候,该拦截器提供存储和检索Action的所有错误和正确信息的功能。

l checkbox:视图中如果有checkbox存在的情况,该拦截器自动将unchecked的checkbox当作一个参数(通常值为“false”)记录下来。这样可以用一个隐藏的表单值来记录所有未提交的checkbox,而且缺省unchecked的checkbox值是布尔类型的,如果视图中checkbox的值设置的不是布尔类型,它就会被覆盖成布尔类型的值。

l profiling:通过参数来激活或不激活分析检测功能,前提是Web项目是在开发模式下。(涉及到调试和性能检验时使用)

l roles:进行权限配置的拦截器,如果登录用户拥有相应权限才去执行某一特定Action。


相关文档
最新文档