拦截器配置:
拦截器允许你在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想要在默认拦截器的基础上添加新的拦截器,那么只能在自定义拦截器栈中单个添加默认拦截器引用!