Struts2的拦截器 - 图文 下载本文

name指定了拦截器的名字,class指定了该拦截器的实现类。

如果开发者定义的 package继承了Struts 2.0框架的默认包,即:

则可以自由引用struts-default.xml中的拦截器。

下面是对上述内置拦截器的简要介绍:

Alias:在不同请求之间将请求参数在不同名字间转换,但请求的内容不变。

Chain:让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(

conversionError:将错误从ActionContext中添加到Action的属性字段中。

11

Cookie:使用配置的name与value来指定cookies。

createSession:自动地创建HttpSession,用来为需要使用到HttpSession的拦截器服务。 debugging:提供不同的调试用的页面,来展现内部的数据状况。

execAndWait:在后台执行Action,同时将用户带到一个中间的等待页面。 exceptio:将异常定位到一个页面。 fileUpload:提供文件上传功能。 i18n:记录用户选择的locale。 logger:输出Action的名字。

modelDriven:如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。

scopedModelDrive:如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法,将其放入Action内部。

params:将请求中的参数设置到Action中去。

prepare:如果Acton实现了preparable,则该拦截器调用Action类的prepare方法。 staticParams:从struts.xml文件中将中的中的内容设置到对应的Action中。

scope:将Action状态存入session和application的简单方法中。

servletConfig:提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。

time:输出Action执行的时间。 token:通过Token来避免重复提交。

tokenSession:和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中。

validation:使用action-validation.xml文件中定义的内容校验提交的数据。

workflow:调用Action的validate方法,一旦有错误返回,重新定位到INPUT页面。 store:存储或者访问实现ValidationAware接口的Action类出现的消息、错误、字段错误等。

checkbox:添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。

profiling:通过参数激活profde。

roles:确定用户是否具有JAAS指定的Role,否则不予执行。

Struts 2利用这些拦截器组合了一系列的拦截器栈,也在struts-default.xml文

件中:

12

13

14

上面的配置代码配置了Struts 2.0应用所需要的大部分拦截器栈,很多时候,我们只需要使用系统的拦截器栈defaultStack即可,因为用户自定义的包继承了struts-default包,而此包又指定了 defaultStack拦截器栈为默认拦截器栈,系统将自动会把defaultStack拦截器作用于Action。

十、一个使用内置记时拦截器(timer)的例子

timer是Struts 2.0的一个内置拦截器,可以输出Action的执行时间,所以也可以称它为耗时拦截器。下面我们就使用这个拦截器来观察Action的执行时间,这也是检测系统瓶颈的一个重要方法。

创建一个Action,此Action什么也没有做,只是让线程休眠一段时间来模拟程序运行消耗的时间,代码如下。

15