struts2拦截器xml配置

本文详细介绍了在Struts2中如何配置拦截器,包括单个拦截器、拦截器栈的定义及使用方法,以及如何初始化拦截器参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在struts.xml配置文件中,如果要定义拦截器,需要为拦截器制定一个拦截器。拦截器的定义适用<interceptor../>元素来实现。定义格式:
<interceptor name="拦截器A"  class="拦截器实现类A"/>

<interceprot../>元素还可以定义<param.../>参数子元素,用来对拦截器的参数初始化,读者可以参考下面代码;
<!--定义拦截器或者拦截器栈-->
<interceptor name="拦截器A" class ="拦截器实现类A">
<!--定义拦截器参数-->
<param name="参数A">参数A初始化值</param>
<param name="参数B">参数B初始化值 </param>
... ....
</interceptor>
...  ...

struts2中还可以定义一个拦截器栈,即有都个拦截器组成的拦截器组来实现特定的拦截功能。例如:可以将用户安全认证拦截器,日志记录拦截器,密码加密拦截器和其他相关拦截器组成一个拦截器栈,在一个业务控制器Action执行之前使用,比如用户注册Action,在执行该Action前来执行该拦截器栈,进行一系列公共功能方面的处理。
在配置文件中定义拦截器栈,使用<interceptor-stack.../>元素,该元素中需要定义子元素<interceptor-ref.../>,即该拦截器栈所包含的拦截器引用。参考下面示例:
<interceptors>
<!--定义拦截器-->
<intercepter name="interceptor1"   class="interceptorClass1"/>
<intercepter name="interceptor2"   class="interceptorClass2"/>
<intercepter name="interceptor3"   class="interceptorClass3"/>

<!--将拦截器加入栈-->
<interceptor-stack name="myinterceptorStack">
<interceptor-ref name="interceptor1"/>          此处name除了可以是一个拦截器外还可以是个拦截器栈的名称
<interceptor-ref name="interceptor2"/>          见下例;
<interceptor-ref name="interceptor2"/>
</interceptor-stack>
</interceptors>


将拦截器栈basicStack包含到myStack栈中;
<!--定义一个名为“MyStack”的拦截器栈,其中包含了一个拦截器栈basicStack-->
<intereptor-stack name="MyStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="Myinterceptor"/>
......
</interceptor-stack>
 Struts2可以在使用拦截器和初始化拦截器是来定义拦截器参数。一般定义拦截器是使用<param.../>初始化参数值是拦截器的默认参数;而在使用拦截器是(一般在Action定义中使用拦截器)会动态指定拦截器参数值。拦截器参数初始化,如下:
<!--定义一个名为“MyStack”的拦截器栈,其中包含了一个拦截器栈basicStack-->
<interceptor-stack name="MyStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="Myinterceptor"/>
<!--初始化拦截器参数-->
<param name="参数A“>参数A初始化值</param>
... ...
</interceptor-stack>

<action name="MyAction" class=“MyActionClass”>
<result name="success">/success.jsp</result>
<!--引用默认拦截器-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="Myinterceptor"></interceptor-ref>
<!--在使用拦截器是指定拦截器参数-->
<param name="参数A">参数A初始化值</param>
</action>
注意:如果定义拦截器是和使用拦截器时都指定了不同的参数值,那么,使用拦截器时指定的参数值会覆盖定义时代参数值;定义拦截器时指定的但数值为该拦截器的默认参数值。



(注意使用defaultStack 和继承struts-default)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值