b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

filterconfig struts2执行流程(6)

电脑杂谈  发布时间:2018-02-15 05:13:20  来源:网络整理

这个ActionContext存储了一些与当前Action相关的信息。

其实从上一步我们就不难看出struts2为每一个Action创建一个线程,这也体现了struts2相比于struts1的优势:线程安全,因为每一个Action都由一个单独的线程来负责,不存在共享数据,所以安全。我们进入PrepareOperations类的assignDispatcherToThread()方法的源码看一下:

public void assignDispatcherToThread() {
    // 将当前的这个dispatcher实例化
    Dispatcher.setInstance(dispatcher);
}

再进入Dispatcher的setInstance方法中看一下:

public static void setInstance(Dispatcher instance) {
    // 调用了这个Dispatcher的instance属性的set方法
    // ps:这个instance是一个ThreadLocal对象
    Dispatcher.instance.set(instance);
}

再进入set方法中看一下:

public void set(T value) {
Thread t = Thread.currentThread();
    ThreadLocalMap map = getMap(t);
    if (map != null)
        map.set(this, value);
    else
        createMap(t, value);
}

终于找到根源了,获取到当前的线程,把dispatcher放入当前线程中。那么这个Dispatcher有什么作用呢?看一下源码,这个源码有点多,就摘抄一个重要的方法来看下吧:

/**
 * 初始化一系列的配置文件:default.properties, struts-default.xml, struts.properties, struts.xml...文件,并且是按顺序加载
 */
public void init() {

    if (configurationManager == null) {
        configurationManager = createConfigurationManager(DefaultBeanSelectionProvider.DEFAULT_BEAN_NAME);
    }

    try {
        init_FileManager();
        init_DefaultProperties(); // [1]default.properties
        init_TraditionalXmlConfigurations(); // [2]struts-default.xml...
        init_LegacyStrutsProperties(); // [3]struts.properties
        init_CustomConfigurationProviders(); // [5]struts.xml
        init_FilterInitParameters() ; // [6]初始化过滤器配置的参数
        init_AliasStandardObjects() ; // [7]别名什么的..这里就不深究了

        Container container = init_PreloadConfiguration();
        container.inject(this);
        init_CheckWebLogicWorkaround(container);

        if (!dispatcherListeners.isEmpty()) {
            for (DispatcherListener l : dispatcherListeners) {
                l.dispatcherInitialized(this);
            }
        }
    } catch (Exception ex) {
        if (LOG.isErrorEnabled())
            LOG.error("Dispatcher initialization failed", ex);
        throw new StrutsException(ex);
    }
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-78438-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 钱宇
      钱宇

      我们这些老家伙积累点钱防老

    热点图片
    拼命载入中...