定义一个可以继承的包,在这个包里面写入自己常用的拦截器,于是就实现了全局拦截器的实现。
现在,我们定义一个专门用来继承的包:
<!--专门提供前台继承的包--> <package name="my" abstract="true" extends="struts-default"> <interceptors> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="loadingNav"/> </interceptor-stack> <interceptor name="loadingNav" class="com.hlcg.main.interceptor.NavInterceptor"/> </interceptors> <default-interceptor-ref name="myStack"/> <global-results> <result name="msg">/common/msg.jsp</result> </global-results> </package>
我们现在定义一个业务包,这个业务包继承我们刚才定义的全局包:
<package name="struts-main" extends="my" namespace="/"> <!--进入主页--> <action name="index" class="indexAction"> <result>/WEB-INF/pages/index.jsp</result> </action> <!-- 关于我们 --> <action name="aboutUs" class="aboutUsAction"> <result>/WEB-INF/pages/aboutUs.jsp</result> </action> </package>
这样,在使用这些action的时候,会自动先运行我们而之前定义好的默认拦截器,也会拥有全局result。
注意:在写拦截器栈的时候千万不要忘记defaultStack,如果没有他,你的很多功能就无法实现了。