ActionServlet初始化

public void init() throws ServletException {
  /*
   调用initInternal()方法,初始化struts框架内在的消息资源,如与系统日志相关的通知、警告和错误信息。
   */
        initInternal();
   /*
  调用initOther(),从web.xml文件中加载ActionServlet的初始化参数,如config,debug,convertNull等,具体参数参见“ActionServlet参数设置.doc”
         */
        initOther();
        /*
   调用initServlet(),从web.xml文件中加载ActionServlet的URL映射信息。此外还会注册web.xml和struts配置文件所使用的DTD文件,这些DTD文件用来验证web.xml和struts配置文件的语法
         */
        initServlet();
        getServletContext().setAttribute(Globals.ACTION_SERVLET_KEY, this);
       
        /*
        调用initModuleConfig(),加载并解析默认应用模块的struts配置文件;创建ModuleConfig对象,把它存在ServletContext中
        */
        // Initialize modules as needed
        ModuleConfig moduleConfig = initModuleConfig("", config);
        /*
        调用intiModuleMessageResources(),加载并初始化默认应用模块的消息资源,创建MessageResources对象,把它存在ServletContext中
        */
        initModuleMessageResources(moduleConfig);
       
        /*
        调用initModuleDataSources()方法,加载并初始化默认应用模块的数据源。如果没有在struts配置文件中没有定义<data-sources>元素,就忽略这一流程
        */
        initModuleDataSources(moduleConfig);
       
        /*
        调用initModulePlugins(),加载并初始化默认应用模块的所有插件
        */
        initModulePlugIns(moduleConfig);
        /*
         默认应用模块配置完毕
          */
        moduleConfig.freeze();
       
        /*
        当默认子应用模块被成功初始化后,如果应用还包括其他子应用模块,将重复流程4-7,分别对其他子应用模块进行初始化。
        */
        Enumeration names = getServletConfig().getInitParameterNames();
        while (names.hasMoreElements()) {
            String names.nextElement();
            if (!name.startsWith("config/")) {
                continue;
            }
            String prefix = name.substring(6);
            moduleConfig = initModuleConfig
                (prefix, getServletConfig().getInitParameter(name));
            initModuleMessageResources(moduleConfig);
            initModuleDataSources(moduleConfig);
            initModulePlugIns(moduleConfig);
            moduleConfig.freeze();
        }
        destroyConfigDigester();
       
        //到此,ActionServlet初始化完毕
}
init()方法流程图如下:

你可能感兴趣的:(servlet,struts,职场,休闲)