Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 891|回复: 0

Struts2使用之拦截器-配置

[复制链接]

该用户从未签到

发表于 2011-10-9 23:40:44 | 显示全部楼层 |阅读模式
如果要在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对应有7、8个拦截器也并不稀奇。可以想象的到,如果要为每一个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"/>   
由上面的种种情况可以得出,当配置初始的拦截器与拦截器栈时,必须要确保它们的名字是唯一的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-4 05:57 , Processed in 0.358213 second(s), 35 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表