假如这个世界上只剩下你一个人,当你正坐在屋子里的时候,这时突然响起了敲门声...
Struts2教程8:拦截器概述
上一篇 /
下一篇 2008-05-04 14:52:21
/ 个人分类:struts2
查看( 201 ) /
评论( 1 )
本文为原创,如需转载,请注明作者和出处,谢谢!
`u0Gw&OJ%WK'{6F0
ITPUB个人空间xN'H ^AL'z'_
Struts2的拦截器和Servlet过滤器类似。在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完拦截器后,最后会执行Action的execute方法。
8f&pH:PWIlo0
Struts2拦截器类必须从com.opensymphony.xwork2.interceptor.Interceptor接口继承,在Intercepter接口中有如下三个方法需要实现:ITPUB个人空间7T(^$WR1^PU
8p|v+Y~5q5S0
void destroy();
&Y&f_0TKiL0
void init();
1^["Ap
qW _6u0
String intercept(ActionInvocation invocation) throws Exception;ITPUB个人空间2@E:RNU.^^!PM
ITPUB个人空间*~*UGYq
B g
其中intercept方法是拦截器的核心方法,所有安装的拦截器都会调用之个方法。在Struts2中已经在struts-default.xml中预定义了一些自带的拦截器,如timer、params等。如果在<package>标签中继承struts-default,则当前package就会自动拥有struts-default.xml中的所有配置。代码如下:
p4N#`v:N,z0
ITPUB个人空间z*gF6U8l Z
g g
<package name="demo" extends="struts-default" > ... </package>ITPUB个人空间@h p9I7e;|
\v5J w g8V};P0
在struts-default.xml中有一个默认的引用,在默认情况下(也就是<action>中未引用拦截器时)会自动引用一些拦截器。这个默认的拦截器引用如下:ITPUB个人空间y&D B1[)k[)Y
/?Iq$m%Q0
<default-interceptor-ref name="defaultStack"/>
@G8Q?8K0
w"t+}p'Y0
<interceptor-stack name="defaultStack">ITPUB个人空间'i g0cX%Z(hx5p
<interceptor-ref name="exception"/>
s_F*W[0
<interceptor-ref name="alias"/>ITPUB个人空间*JC5O$~\fW%W$l
b
<interceptor-ref name="servletConfig"/>
g)@6~(p7m,UT)h1A0
<interceptor-ref name="prepare"/>ITPUB个人空间[yz[5D&]3NxsF
<interceptor-ref name="i18n"/>ITPUB个人空间;GMr,}@Fh
<interceptor-ref name="chain"/>