struts2默认拦截器与自定义拦截器在使用时的注意事项

jopen 8年前

很多时候,我们会自定义一个拦截器来替换struts2默认的拦截器,这时,我们需要注意一些事项。

百度一下,我们找到了默认拦截器的说明,如下:

拦截器/Interceptor 名字 说明
Alias alias 在不同的请求之间将请求的参数在不同的名称之间转换,请求的内容不变
Chaining chain 让前一个Action的属性可以变被后一个Action访问,现在和chain类型的result()结合使用
Checkbox checkbox 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而HTML默认情况下不提交没有选中的checkbox
Cookies cookies 使用配置的name ,value来指定cookies
Conversion Error conversionError 将错误从ActionContext中添加到Action属性字段中
Create Session createSession 自动的创建HttpSession,用来为需要使用HttpSession的拦截器服务
Debugging debugging 提供不同的调试用的页面来展现内部的数据情况
Execute and Wait execAndWait 在后台执行Action,同时将用户带到一个中间的等待页面
Exception exception 将异常定位到一个画面
File Upload fileUpload 提供文件上传功能
I18n i18n 记录用户选择的locale
Logger logger 输出Action的名字
Message Store store 存储或者访问实现ValidationAware接口的Action类出现的消息、错误、字段错误等
Model Driven model-driven 如果一个类实现了ModelDriven,将getModel得到的结果放到Value Stack中
Scoped Model Driven scoped-model-driven 如果一个Action实现了Scoped Model Driven,这这个拦截器会从相应的scope中取出model调用Action中的setModel方法,将其放入Action内部
Parameters params 将请求的参数设置到Action中
Prepare prepare 如果Action实现了Preparable,则该拦截器会调用Action类的prepare方法
Scope scope 将Action状态存入session和application中的简单方法
Servlet Config servletconfig 提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问
Static Parameters staticParams 从struts.xml文件中将中的内容设置到对应的Action中
Roles roles 确定用户是否具有JAAS指定的Role,否则不予执行
Timer timer 输出Action执行的时间
Token token 通过Token来避免双击
Token Session tokenSession 和Token一样,不过双击的时候将数据放到了session中
Validation validation 使用action-validation.xml文件中定义的内容校验提交的数据
Workflow workflow 调用Action的validate方法,一旦有错误返回,重新定位到INPUT页面
Parameter Filter N/A 从参数列表中删除不必要的参数
Profiling profiling 通过参数激活profile


其中,有一个名为params的拦截器,它的作用是“将请求的参数设置到Action中”,也就是说,如果你从页面中传值到Action,即拦截请求参数,并赋值给action里的属性,而且你自定义的拦截器要用到这些值栈中的值,则你的拦截器栈中,需要在自定义拦截器前面加上默认的拦截器,如下:
<interceptor-ref name="params"/>  <interceptor-ref name="myInterceptor"/>
</span>