struts2中,每个功能的实现由拦截器实现,并且为了使用方便,提供了拦截器栈的概念。struts2有一个默认执行的拦截器栈:defaultStacks,但是一旦用户指定了执行某个拦截器,默认的拦截器栈就不会执行了。
拦截器的具体作用域在struts.xml配置文件中配置:
首先在package标签中配置拦截器:
<interceptors>
<interceptor name="loginCheck" class="cn.itcast.interceptor.CheckInterceptor"></interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="loginCheck"></interceptor-ref>
</interceptor-stack>
</interceptors>
【其中,interceptor标签中的name属性是自定义的一个拦截器名称,class属性是自定义拦截器类的全路径,】
一、全局拦截:当前包下所有的action都执行myStack栈
在package标签下
<default-interceptor-ref name="myStack"></default-interceptor-ref>
二、只在选中的action中执行myStack栈
<action name="user_*" class="cn.itcast.action.UserAction" method="{1}">
<!--第二种写法: 只是在这一个Action中执行myStack栈 <span style="font-family: Arial, Helvetica, sans-serif;">-->
</span> <interceptor-ref name="defaultStackt"></interceptor-ref>
<interceptor-ref name="loginCheck"></interceptor-ref>
三、将第二种方法中直接换成myStack栈<interceptor-ref name="myStack"></interceptor-ref>