Struts2使用12 -- 拦截器2 -- 配置

30 篇文章 0 订阅
26 篇文章 0 订阅

 

如果要在Action中激活依赖注入功能(或其他任何由拦截器提供的功能),就必须要对Action进行配置。和其他元素一样,许多拦截器都已经提供了默认的配置项。你只需要确认一下Action所在的Package继承了“struts-default”package

在配置一个新的拦截器之前,首先要对它进行定义。<interceptors /><interceptor />标签都要直接放到<package>标签里面。像我们上面提到的那些拦截器,它们的配置项就是这样的:

<interceptors>

      

       <interceptor name="autowiring"

class="…xwork2.spring.interceptor.ActionAutowiringInterceptor"/>

</interceptors>

我们同时还要确保Action中应用了所需的拦截器。这可以通过两种方式来实现。第一种是把拦截器独立的分配给每一个Action

<action name="my" class="MyAction" >

       <result>view.jsp</result>

       <interceptor-ref name="autowiring"/>

</action>

在这种情况下,Action所应用的拦截器是没有数量限制的。但是拦截器的配置顺序必须要和执行的顺序一样。

第二种方式是在当前的Package下面配置一个默认的拦截器:

<default-interceptor-ref name="autowiring"/>

这个声明也是直接放在<package /> 标签里面,但是只能有一个拦截器被配置为默认值。

现在拦截器已经被配置好了,每一次Action所映射的URL接到请求时,这个拦截器就会被执行。但是这个功能还是很有限的,因为在大多数情况下,一个Action都要对应有多个拦截器。实际上,由于Struts2的很多功能都是基于拦截器完成的,所以一个Action对应有78个拦截器也并不稀奇。可以想象的到,如果要为每一个Action都逐一配置各个拦截器的话,那么我们很快就会变得焦头烂额。因此一般我们都用拦截器栈(interceptor stack)来管理拦截器。下面是struts-default.xml文件中的一个例子:

<interceptor-stack name="basicStack">

    <interceptor-ref name="exception"/>

    <interceptor-ref name="servletConfig"/>

    <interceptor-ref name="prepare"/>

    <interceptor-ref name="checkbox"/>

    <interceptor-ref name="params"/>

    <interceptor-ref name="conversionError"/>

</interceptor-stack>

这个配置节点是放在<package /> 节点中的。每一个 <interceptor-ref />标签都引用了在此之前配置的拦截器或者是拦截器栈。

我们已经看到了如何在Action中应用拦截器,而拦截器栈的用法也是一模一样的,而且还是同一个标签:

<action name="my" class="MyAction" >

       <result>view.jsp</result>

       <interceptor-ref name="basicStack"/>

</action>

默认拦截器的情况也是一样的——只需要把单个拦截器的名字换成拦截器栈的名字就可以了。

<default-interceptor-ref name="basicStack"/>

由上面的种种情况可以得出,当配置初始的拦截器与拦截器栈时,必须要确保它们的名字是唯一的。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值