拦截器
1.自定义拦截器类,必须继承AbstractInterceptor类(抽象类)
重写public String intercept (ActionInvocation arg0)
2.在Struts.xml文件中创建拦截器对象,格式:
<package>
<interceptors>
<interceptor name=”拦截器名” class=”拦截器类全名”>
[<param name=”成员变量名” >值</~~>]
</~~>
</~~>
</~~>
3.为Action注册拦截器 格式:
<action>
…
<interceptor-ref name=”拦截器名”>
[<param name=”成员变量”>] 作用: 成员变量赋值
</~~>
…
</~~>
注意事项 1 当引入自定义拦截器时会导致默认拦截器失效,此时需重新引入默认拦截器栈
格式:<inyrtceptor-ref name=”defaultStack”>
2 拦截器的注册顺序即为拦截器的执行时顺序。
3 在拦截器中参数arg0可获得
Action Context ac = arg.getInvocationContext();
Map Sesstion = ac.getSession();
拦截器栈的使用
步骤
1新建拦截器栈 格式
<interceptors>
<interceptor …/>
<interceptor-stack name=”栈名”>
< interceptor-ref name=”拦截器名/>
< /interceptor-stack>
< /interceptor >
2 注册拦截器栈 格式
<action …>
< interceptor-ref name=”栈名”/>
</action>
过滤性拦截
a.新建拦截器类 继承AbstractInterceptor类 重写doInterceptor(方法)
b.新建或注册拦截器时
格式:
<interceptor interceptor-ref>
<param name=”excludeMethods”>不进行拦截的Action方法名[名]
</param>
<param name=”includeMethods”>excute,abc,aa,cc,bb</param>
</interceptor interceptor-ref>