内容发布更新时间 : 2025/5/16 20:30:57星期一 下面是文章的全部内容请认真阅读。
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