拦截器栈的使用
很多时候,相同的一组拦截器可以适用于不同的动作类,例如,
<package name="default" namespace="/" extends="struts-default"> <action name="checkInAction" class="com.yiibai.common.action.CheckInAction" > <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <interceptor-ref name="defaultStack" /> <result name="success">/pages/checkIn.jsp</result> </action> <action name="checkOutAction" class="com.yiibai.common.action.CheckOutAction" > <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <interceptor-ref name="defaultStack" /> <result name="success">/pages/checkOut.jsp</result> </action> </package>
在上述情况下,它有许多重复工作以及不能重复使用。
幸运的是,在Struts 2自带的拦截器栈,使开发人员建立一组拦截到一个单元名为“栈名字”, 和可以通过“栈名字”引用操作它。
最佳做法
建议组合相同的一组拦截器到一个拦截器栈摆脱重复的工作,并增加了项目的可重用性。<package name="default" namespace="/" extends="struts-default"> <interceptors> <interceptor-stack name="defaultStackWithLog"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <action name="checkInAction" class="com.yiibai.common.action.CheckInAction" > <interceptor-ref name="defaultStackWithLog"/> <result name="success">/pages/checkIn.jsp</result> </action> <action name="checkOutAction" class="com.yiibai.common.action.CheckOutAction" > <interceptor-ref name="defaultStackWithLog"/> <result name="success">/pages/checkOut.jsp</result> </action> </package>
在上面的例子更新,声明一个拦截器栈,命名为“defaultStackWithLog”其中包括“timer“, “logger” 和 “defaultStack” 拦截器,并且它通过“interceptor-ref”元素引用一个正常的拦截器。
拦截器栈和拦截器很类似,区别之处是一个拦截器栈包括了一个或者多个拦截器。
使用方法差不多:
调用的先决条件都是在<interceptors/>标签中声明,内置的默认的拦截器和拦截器栈不需要声明,直接引用就好了.引用方法都是在action中使用<interceptor-ref name=""/>,如果需要重写参数的话使用<param/>标签
<package name="mypackage" extends="struts-default"> <interceptors> <interceptor-stack name="myStack"> <interceptor-ref name="timmer"/> <interceptor-ref name="logger"/> </interceptor-stack>
<interceptor name="authentication" class="com.interceptor.AuthenticationInterceptor"/>
</interceptors>
<action name="demo">
<interceptor-ref name="myStack"/>
<interceptor-ref name="authentication"/>
</action>
</package>

浙公网安备 33010602011771号