拦截器分类 | 细分 | 作用 | 补充 |
工具拦截器 (辅助开发,调优,解决问题简单工具) | timer | 记录执行花费的时间 |
|
logger | 提供简单日志记录机制记录了在预处理时的进入生命以及后加工的推出声明 | ||
数据转移拦截器 (从其他位置转移数据) | params(defaultStack) | 将请求参数转移到通过ValueStack上发现的第一个匹配的属性 | 通常在defaultStack中后者先于前者触发,所以后者的请求参数可能会被前者覆盖,当然你也可以改变这些拦截器的顺序。 |
static-params(defaultstack) | 同上(不同的是参数的来源该拦截器转移的参数定义在声明性架构的动作元素中) | ||
autowiring | 为使用Spring管理应用程序提供了一个集成点 |
| |
Servlet-config(defaultStack) | 将来源于Servlet API的各种对象注入到动作,这样动作执行时可以直接使用 |
| |
fileUpload(defaultStack) | 将文件和元数据从多重请求转换为常规请求参数以便像普通参数一样设置到动作上 |
| |
工作流拦截器 (提供改变请求处理的工作流(处理路径),检查处理状态干涉改变正常路径) | workflow(defaultStack) | 动作协作,提供数据验证以及验证错误发生时改变后续工作流 | 这个拦截器负责调用Action类中的validate方法,如果验证失败,返回input视图 |
validation (defaultStack) | 提供了声明性的方式验证你的数据。是验证框架的处理入口点 | 与前者调用的顺序有defaultstack来管理 | |
prepare(defaultStack) | 当它执行的时候,在动作上查找prepare()方法。如果动作实现了Preparable接口,prepare()方法就会被调用。允许执行任何类型的预处理。 |
| |
modelDriven(defaultStack)
| 通不是动作过调用getModel()方法改变执行的工作流,将模型对象放在ValueStack上请求接受参数。 | 如果不用这个拦截器参数会被params拦截器直接转移到动作对象上。modelDriven通过将模型(而不是动作)放在valueStack上从而改变工作流 | |
其他拦截器
| Exception(defaultStack) | 捕获异常根据类型将他们映射到用户自定义的错误页面 | 在defaultStack中出现在第一位 |
token和token-session | 避免表单重复提交系统的一部分。 | 该拦截器用来像被拦截器检查的请求发一个令牌,如果唯一的令牌再次传来,则视为重复的。 | |
scoped-modelDriven(defaultStack) | 增加了modelDriven的功能,为动作模型对象提供跨请求的向导式的持久性。 | 适合用于实现跨越一系列请求使用一个数据对象的向导应用 | |
execAndWait | 当一个请求需要执行很长时间,给用户一个反馈 |
|
下图是自己画的一个Struts2的工作原理图:
参考图书:Struts 2实战 人民邮电出版 Donald Brown等著