正如在之前所编写代码一样,可以发现,在一个项目里面至少需要以下几种拦截器:
验证拦截,登录拦截,defaultStack拦截,可是如果每一次都这样分别去写;
<interceptor-ref name="timer"/> <interceptor-ref name="mldn"/> <interceptor-ref name="login"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref>
如果说要同时编写多个拦截器引用以上的代码就明显感觉第重复了,而且也不方便管理.所以为了方便多个拦截器的管理操作,可以定义一个拦截器栈,在这个拦截器栈中可以引用多个拦截器
范例:定义拦截器栈
<interceptors> <interceptor-stack name="zwbstack"> <interceptor-ref name="mldn"/> <interceptor-ref name="login"/> <interceptor-ref name="timer"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> <interceptor name="mldn" class="cn.mldn.interceptor.MyInterceptor"></interceptor> <interceptor name="login" class="cn.mldn.interceptor.Logininterceptor"></interceptor> </interceptors> <global-results > <result name="forward.page">forward.jsp</result> </global-results> <action name="MessageAction" class="cn.mldn.action.MessageAction"> <interceptor-ref name="zwbstack"></interceptor-ref> </action> </package>
这种的操作形式是以后开发之中,使用最多的一种形式的结构.
总结
拦截器是可以由用户自己来决定执行顺序的
是在执行Action之前的一项处理操作!