在Struts2中,与拦截器有关的元素有这5个:intercetors,intercetor,intercetor-ref,intercetor-stack和default-intercetor-ref。
我们在使用一个拦截器之前,必须先在<intercetors>的段落里用一个intercetor元素注册它。例如,我们在下面这个package里注册两个拦截器:
如果想把某个拦截器添加给某个动作,就要在该动作的action元素下使用intercetor-ref元素,如下:
大部分struts应用程序都会有多个action元素,当我们反复地在action元素里列出一大堆拦截器清单时可能会非常麻烦,这时,就用到了拦截器盏元素(intercetor-stack):
struts-default包已经定义了几个拦截器栈和一个default-intercetor-ref元素,如果某个动作没有定义任何拦截器,就将使用这个元素定义的默认拦截器或者拦截器栈:
如果某个动作除了使用默认的拦截器外,还使用到其他的拦截器,则需要重新定义默认的拦截器,这是因为如果action元素里出现了intercetor元素,default-intercetor-ref元素将被忽略。
我们在使用一个拦截器之前,必须先在<intercetors>的段落里用一个intercetor元素注册它。例如,我们在下面这个package里注册两个拦截器:
<package name="myPackage" extends="struts-default">
<intercetors>
<intercetor name="validate" class="com..."/>
<intercetor name="logger" class="com..."/>
</intercetors>
</package>
如果想把某个拦截器添加给某个动作,就要在该动作的action元素下使用intercetor-ref元素,如下:
<package name="myPackage" extends="struts-default">
<intercetors>
<intercetor name="validate" class="com..."/>
<intercetor name="logger" class="com..."/>
</intercetors>
<action name="delete" class="com...">
<intercetor-ref name="validate"/>
<intercetor-ref name="logger"/>
<result name="success">/jsp/success.jsp</result>
</action
</package>
大部分struts应用程序都会有多个action元素,当我们反复地在action元素里列出一大堆拦截器清单时可能会非常麻烦,这时,就用到了拦截器盏元素(intercetor-stack):
<package name="myPackage" extends="struts-default">
<intercetor-stack name="myStack">
<intercetor name="validate" class="com..."/>
<intercetor name="logger" class="com..."/>
</intercetor-stack>
<action name="delete" class="com...">
<intercetor-ref name="myStack"/>
<result name="success">/jsp/success.jsp</result>
</action>
</package>
struts-default包已经定义了几个拦截器栈和一个default-intercetor-ref元素,如果某个动作没有定义任何拦截器,就将使用这个元素定义的默认拦截器或者拦截器栈:
<default-intercetor-ref name="defaultStack" />
如果某个动作除了使用默认的拦截器外,还使用到其他的拦截器,则需要重新定义默认的拦截器,这是因为如果action元素里出现了intercetor元素,default-intercetor-ref元素将被忽略。