标签:
1.拦截器的用途
拦截器适合封装一些通用的处理,便于重复利用。例如请求参数传递给Action属性,日志的记录,权限检查,事物处理等。拦截器通过配置方式调用,因此使用方法比较灵活,便于维护和扩展。
2.创建拦截器组件
创建一个类,实现Interceptor接口,并实现intercept方法。
public String intercept(ActionInvocation invocation){
//拦截器--前部分处理
invocation.invoke();//执行action和result
//拦截器--后续处理
}
3.注册拦截器
在struts.xml中,注册拦截器
<package>
<interceptors>
<interceptor name="别名" class="实现类"/>
//...其他interceptor
</interceptors>
</package>
4.引用拦截器
如果那个Action希望被拦截器扩展,需要在此action配置下,引用拦截器
<action>
<interceptor-ref name="拦截器"/>
//...可以写多个
</action>
5.拦截器栈
往往一个Action需要引用很多个拦截器,那么可以将这些拦截器打包成栈,直接引用这个栈即可,这样可以简化对拦截器的引用
拦截器栈仅仅是对拦截器的打包,方便引用,它在使用上完全等同于拦截器
<interceptor-stack name="mySatck">
<interceptor-ref name="firstInterceptor"/>
<interceptor-ref name="secondInterceptor"/>
</interceptor-stack>
6.预制拦截器
Struts2预制了大量的拦截器,见struts-default.xml第122行。
有一部分拦截器是Struts2框架自身要用到的,必须应用
这些拦截器被打包在basicStack中
我们项目中应用的拦截器,不能少于basicStack中注册的拦截器
7.默认引用拦截器
有一部分拦截器是最常用的,他们被打包在defaultStack中
<interceptor-stack name="defaultStack">
....
</interceptor-satck>
该拦截器栈是Struts2框架默认引用的,即我们不需要在Action中做任何处理,就相当于是引用了这个拦截器栈
注意,一旦我们在action配置下引用了任何拦截器,那么上述默认引用的拦截器就失效了,因此在引用拦截器时,不要丢弃默认拦截器的引用。
8.拦截器调用顺序
拦截器在调用的时候,按照被引用的先后顺序,
调用顺序遵循先进后出原则
标签:
原文地址:http://www.cnblogs.com/Crow00/p/4700660.html