Struts2拦截器翻译自Struts2官方网站Word格式.docx
《Struts2拦截器翻译自Struts2官方网站Word格式.docx》由会员分享,可在线阅读,更多相关《Struts2拦截器翻译自Struts2官方网站Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
所以套用句外国人的话说吧,在一个Action执行时,让我们为它再提升一些吧,给Action更大
的舞台更强大的力量吧。
如上图所示,Struts2的Action被一个或者多个拦截器围绕,所有的用户请求都会被拦截器所拦截,最后交给Action处理,处理结果以逻辑视图的方式返回给用户,调用的流程由配置文件来实现。
在一些例子中,一个拦截器可以解决像重复提交以及验证失败这样的例子。
当然也可以改变一个Action在执行前的状态。
拦截器可以定义为一个指定执行顺序的链中,在某些情况下,拦截器的顺序非常的重要。
="
struts-default"
&
gt;
该元素的意思是定义了一个继承于struts-default包的包,那么该包中的所有action均可使用struts-default.xml中定义的拦截器以及拦截器链。
其中注意一点,struts-default.xml中定义了一系列的拦截器和拦截器链,同时也定义了一个默认的拦截器defaultStack,一电定义了默认的拦截器,那么该拦截器将会对包中的所有的Action起作用,当然如果你的Action中显式地定义了拦截器,那么默认拦截器将会失去作用,当然如果想不让他失去作用,那么也必须显式地定义系统默认的拦截器。
&
lt;
default-interceptor-ref..../&
元素为&
package../&
元素的一个子元素配置,如果在某个包中定义了一个默认的拦截器,那么此拦截器将对该包中的所有的Action都是有效的,当然一定要记住,显式地定义拦截器的情况除外。
当然除了可以使用系统提供的默认的拦截器,我们也可以自定义自己的拦截器。
Struts2框架提供了一个定义拦截器的接口Interceptor接口。
同时Struts2框架也提供了一个可以用于过滤拦截Action方法的类MethodFilterInterceptor。
该类有两个属性excludeMethods和includeMethods。
分别代表指定拦截器拒绝拦截的方法和需要拦截的方法。
例:
struts.xml
packagename="
default"
extends="
interceptors&
interceptorname="
timer"
class="
.."
/&
logger"
/interceptors&
actionname="
login"
class="
tutorial.Login"
interceptor-refname="
resultname="
input"
login.jsp&
/result&
success"
type="
redirect-action"
/secure/home&
/action&
/package&
在大部分的Web应用中,我们发现会一再地重复应用一些拦截器的设置。
重复地定义一系列的拦截器是个麻烦的事,当然我们可以绑定这些拦截器到一个链中。
#160;
interceptor-stackname="
myStack"
/interceptor-stack&
tutuorial.Login"
看看上面的配置如果不明白的话,再去看看struts-default.xml可以弄清楚这些拦截器都干什么了。
?
xmlversion="
1.0"
encoding="
UTF-8"
?
!
--
/*
*$Id$
*
*LicensedtotheApacheSoftwareFoundation(ASF)underone
*ormorecontributorlicenseagreements.SeetheNOTICEfile
*distributedwiththisworkforadditionalinformation
*regardingcopyrightownership.TheASFlicensesthisfile
*toyouundertheApacheLicense,Version2.0(the
*"
License"
);
youmaynotusethisfileexceptincompliance
*withtheLicense.YoumayobtainacopyoftheLicenseat
*http:
//www.apache.org/licenses/LICENSE-2.0
*Unlessrequiredbyapplicablelaworagreedtoinwriting,
*softwaredistributedundertheLicenseisdistributedonan
ASIS"
BASIS,WITHOUTWARRANTIESORCONDITIONSOFANY
*KIND,eitherexpressorimplied.SeetheLicenseforthe
*specificlanguagegoverningpermissionsandlimitations
*undertheLicense.
*/
--&
DOCTYPEstrutsPUBLIC
"
-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
http:
//struts.apache.org/dtds/struts-2.0.dtd"
struts&
beanclass="
com.opensymphony.xwork2.ObjectFactory"
name="
xwork"
/&
beantype="
struts"
org.apache.struts2.impl.StrutsObjectFactory"
com.opensymphony.xwork2.ActionProxyFactory"
com.opensymphony.xwork2.DefaultActionProxyFactory"
org.apache.struts2.impl.StrutsActionProxyFactory"
com.opensymphony.xwork2.util.ObjectTypeDeterminer"
tiger"
com.opensymphony.xwork2.util.GenericsObjectTypeDeterminer"
notiger"
com.opensymphony.xwork2.util.DefaultObjectTypeDeterminer"
org.apache.struts2.dispatcher.mapper.ActionMapper"
org.apache.struts2.dispatcher.mapper.DefaultActionMapper"
composite"
org.apache.struts2.dispatcher.mapper.Com