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文件中将 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