假如这个世界上只剩下你一个人,当你正坐在屋子里的时候,这时突然响起了敲门声...
Struts2教程9:实现自已的拦截器
上一篇 /
下一篇 2008-05-09 20:57:58
查看( 46 ) /
评论( 0 )
本文为原创,如需转载,请注明作者和出处,谢谢!ITPUB个人空间2`)B8Rg:g
f;aIP/~iv0 在上一篇中介绍了Struts2拦截器的原理,在这一篇中我们将学习一下如何编写自己的拦截器。ITPUB个人空间6Na)E J'G
ITPUB个人空间"Z/GF] R1`
一、拦截器的实现
+}QeBfd0 实现一个拦截器非常简单。实际上,一个拦截器就是一个普通的类,只是这个类必须实现com.opensymphony.xwork2.interceptor.Interceptor接口。Interceptor接口有如下三个方法:ITPUB个人空间1D)m$G&~P"i
ITPUB个人空间#M?B@+W)g6[
ITPUB个人空间E$r:I;Q"["D6k:h0u6eok
public interface Interceptor extends Serializable
M+R
y6Og9SC0{
,`7Z#Uslu
@0 void destroy();ITPUB个人空间Vr|+O+r+[_,He
void init();ITPUB个人空间5S4kFC;Q-Fj$@A&e1I
String intercept(ActionInvocation invocation) throws Exception;
?;o(I.T3a(T]a0}
?#y+}JG_
Y0ITPUB个人空间OH\2M#|C|
其中init和destroy方法只在拦截器加载和释放(都由Struts2自身处理)时执行一次。而intercept方法在每次访问动作时都会被调用。Struts2在调用拦截器时,每个拦截器类只有一个对象实例,而所有引用这个拦截器的动作都共享这一个拦截器类的对象实例,因此,在实现Interceptor接口的类中如果使用类变量,要注意同步问题。ITPUB个人空间-D.a^3I!I
#MMUGP_-t8I}/J f0下面我们来实现一个简单的拦截器,这个拦截器通过请求参数action指定一个拦截器类中的方法,并调用这个方法(我们可以使用这个拦截器对某一特定的动作进行预处理)。如果方法不存在,或是action参数不存在,则继续执行下面的代码。如下面的URL:ITPUB个人空间6R6~-o9?!c{9k
ITPUB个人空间'j&[i1}4~y
http://localhost:8080/struts2/test/interceptor.action?action=test