有关Struts2中DispatcherListener的使用

 

在读《Struts2技术内幕》这本书的时候,在核心分发器Dispatcher初始化这一块,有一个问题始终没有弄明白,希望各位不吝赐教。

问题描述:

作者在第三部分的第9章讲Dispatcher初始化时有这样一句话:

有了DispatcherListener接口,相当于我们拥有了在Dispatcher初始化过程中进行自由扩展的一个接口。这也是Struts2在初始化主线中为我们提供的一个重要扩展点。

但我看了API、看了源码,也没有找到使用DispatcherListener的办法,请问我们应该如何使用它,作者上面的话是什么意思?假设一定要用它的话..

Dispatcher源码中是这样的:

 

/**
     * Store list of DispatcherListeners.
     */
    private static List<DispatcherListener> dispatcherListeners =
        new CopyOnWriteArrayList<DispatcherListener>();
/** 
     * Add a dispatcher lifecycle listener. 
     * 
     * @param listener The listener to add 
     */  
    public static void addDispatcherListener(DispatcherListener listener) {  
        dispatcherListeners.add(listener);  
    }  
  
    /** 
     * Remove a specific dispatcher lifecycle listener. 
     * 
     * @param listener The listener 
     */  
    public static void removeDispatcherListener(DispatcherListener listener) {  
        dispatcherListeners.remove(listener);  
    }  

Dispatcher的init方法部分代码:

            if (!dispatcherListeners.isEmpty()) {
                for (DispatcherListener l : dispatcherListeners) {
                    l.dispatcherInitialized(this);
                }
            }

  

在Dispatcher初始化过程中并没有调用到以上方法的地方啊!在Dispatcher的init方法之前好像没有addDispatcherListener调用的地方,那么我们应该如何使用呢?

谢谢...

<!--EndFragment--> <!--EndFragment-->

这个struts2自己没有用到。

用于扩展使用,比如你要定制Dispatcher,或者修改Dispatcher的某些东西;
可以继承FilterDispatcher 然后获取Dispatcher 然后添加DispatcherListener。

就是一个扩展点,但好像没见有用的。

还可以通过继承StrutsPrepareAndExecuteFilter
protected void postInit(Dispatcher dispatcher, FilterConfig filterConfig) {
}

来完成一些扩展。

这个东西没必要扩展不扩展也行!