在struts.xml文件中定义拦截器只需要为拦截器类指定一个拦截器名就可以了,拦截器使用<interceptor.../>元素来定义如:
<interceptor name="defaultStack"/>
一般情况下,只需要通过上面的格式就可以完成拦截器的配置,如果需要在配置拦截器时传入拦截器参数,可使用<param.../>子元素。如:
<interceptor name="defaultStack"/>
<param name="acuu">OK</param>
除此之外,用户还可以把多个拦截器连在一起组成拦截器栈。例如,要在Action执行前同时登录和检查日志,则可以把这两个动作对应的拦截器组成一个拦截器栈。定义拦截器栈使用<interceptor-stack.../>元素,拦截器栈是由多个拦截器组成的,因此需要在<interceptor-stack.../>元素中使用<interceptor-ref.../>元素来定义多个拦截器引用,即该拦截器栈由多个<interceptor-ref.../>元素指定的拦截器组成。实际上,拦截器栈就是一个更大的拦截器。配置拦截器的语法如:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="action" extends="struts-default">
<interceptors>
<interceptor name="helloworld" class="interceptor.HelloWorldInterceptor"/>
</interceptors>
<action name="test" class="action.MyAction">
<result>success.jsp</result>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="helloworld"/>
</action>
</package>
</struts>