拦截器配置:

拦截器允许你在action的执行前后插入代码执行。Struts2中的拦截器是一个强有力的工具,它可以为action动态填入验证(验证用户输入是否正确),对象组装(将用户输入的数据转换为对象的属性),

权限控制(判断使用是否是已登录用户),日志记录等(记录action的执行情况)之类,而且不需要修改action!

要为action配置引用的拦截器,首先需要在interceptors元素中使用interceptor元素中定义拦截器,然后在action元素中使用interceptor-ref元素指定引用的拦截器。interceptor元素有两个必要的属性:class和name,前者指定拦截器的名字,后者指定拦截器的完整类名.

例:假设我们要为ResourceAction配置两个拦截器:logger和security

<package name="default" extend="struts-default">

<interceptors>

<!--定义名为logger的拦截器--!>

<interceptor name="logger" class="cn.interceptor.logger">

<interceptor name="securty" class="securty">

</interceptors>

<action name="resource" class="cn.Action.ResourceAction">

<result name="input" >login.jsp</result>

<result>resource.jsp</result>

<!-- 为resource action 指定拦截器引用 ,当resource action被调用的时候,以上两个拦截器也将被调用啊--!>

<interceptor-ref name="logger">

<interceptor-ref name="securty">

</action>

拦截器按照action引用拦截器的顺序执行

如果拦截器数目过多,则需要配置拦截器栈

<package name="default" extend="struts-default">

<interceptors>

<!--定义名为logger的拦截器--!>

<interceptor name="logger" class="cn.interceptor.logger">

<interceptor name="securty" class="securty">

<interceptor-stack name="loggerAndsecurty">
<interceptor-ref name="logger">
<interceptor-ref name="securty">
</interceptor-stack>
</interceptors>
<action name="resorce" class="classAction">
<result name="input" >login.jsp</result>
<result>resource.jsp</result>
<interceptor-ref name="loggerAndsecurty">
</action>
</package>

 如何定义默认拦截器栈

<default - interceptor-ref name" 'loggerAndsecutry" >

注意:如果你在一个Action中定义了其他拦截器引用,那么此Action将不再使用默认拦截器引用

如果Action想要在默认拦截器的基础上添加新的拦截器,那么只能在自定义拦截器栈中单个添加默认拦截器引用!