分类:
2008-09-09 13:23:20
实现拦截功能的类有:
一、MainInteceptor,主拦截器,所以DWR的远程调用都会被拦截,当然, 调用是细到方法级的,可配置的,该类实现了Spring AOP的MethodBeforeAdvice接口,该类有一个集合成员变量,成员为IInteceptor。
二、IInteceptor,是一个接口,仅有一个execute(AopContext context)函数。该接口是拦截器(与前面的主拦截器不同,本接口定义的拦截器是可以由用户去实现,并且可以有多个)。实现接口只需要实现方法。这些 拦截器会被主拦截器回调。 比如要实现一个身份验证的拦截,SecuityInteceptor,在配置文件中把这个拦截器设置为主拦截器的属性即可获得回调。
三、AopContext,Aop上下文。在主拦截器调用IInteceptor的对象时,把这个上下文对象作为参数来调用子拦截器。从该上下文可获得一系列信息,如HttpSession,HttpRequest等。甚至你可以自已设置属性。
下面看一些代码片断:
MainInteceptor:
private List
public void setInterceptors(List
this.interceptors = interceptors;
}
在before(Method method, Object[] params, Object target)方法里:
WebContext ctx = WebContextFactory.get();//唯一被DWR污染的地方
HttpSession session = ctx.getSession();
AopContext context = new AopContext(); context.setSession(session);
for(Iterator it = interceptors.iterator(); it.hasNext();){
IInterceptor interceptor = (IInterceptor) it.next();
interceptor.execute(context);
}
IInterceptor:
public interface IInterceptor {
public void execute(AopContext context);
}
AopContext就不必贴出来了, 随自已定义些什么属性,不过就内置了一个Map,用来保存数据罢了。
下面来看看配置文件:
就 这样,在配置DWR的配置文件时,配置
这是一种实现方法。如果有别的方法让DWR更、有效,请一定告知。:)