Struts 初始化處理流程
根據(jù)在web.xml中配置的初始化參數(shù),Servlet容器將決定在在容器的第一次啟動(dòng),或第一次客戶請(qǐng)求ActionServlet 的時(shí)機(jī)加載ActionServlet ,不管哪種方式加載,和其它Servlet一樣,ActionServlet 的init( )方法將被調(diào)用,開(kāi)始初始化過(guò)程。讓我們來(lái)看看在初始化過(guò)程中將發(fā)生些什么,理解了這些,對(duì)于我們debug和擴(kuò)展自己的應(yīng)用更加得心應(yīng)手。
1 初始化框架的內(nèi)部消息綁定,這些消息用來(lái)輸出提示,警告,和錯(cuò)誤信息到日志文件中。
org.apache.struts.action.ActionResources用來(lái)獲取內(nèi)部消息;
2 加載web.xml中定義的不同參數(shù),用以控制ActionServlet 的不同行為,這些參數(shù)包括 config, debug, detail, and convertNull ;
3 加載并初始化web.xml中定義的servlet 名稱和servlet映射信息。通過(guò)初始化,框架的各種DTD被注冊(cè),DTD用來(lái)在下一步校驗(yàn)配置文件的有效性;
4、為默認(rèn)應(yīng)用加載并初始化Struts配置文件,配置文件即初始化參數(shù)config指定的文件。默認(rèn)配置文件被解析, 產(chǎn)生一個(gè)ApplicationConfig對(duì)象存于ServletContext 中。可以通過(guò)關(guān)鍵字 org.apache.struts.action.APPLICATION 從ServletContext 中獲取ApplicationConfig;
5 Struts配置文件中指定的每一個(gè)消息資源都被加載,初始化,并存在ServletContext 的合適區(qū)域(基于每個(gè)message-resources元素的key 屬性),如果key 屬性沒(méi)有設(shè)置,則為org.apache.struts.action.MESSAGE;
6 Struts配置文件中聲明的每一個(gè)數(shù)據(jù)源被加載并且初始化,如果沒(méi)有配置數(shù)據(jù)源,這一步跳過(guò);
7 加載并初始化Struts配置文件中指定的插件。每一個(gè)插件的init()方法被調(diào)用;
8 當(dāng)默認(rèn)應(yīng)用加載完成,init()方法判斷是否有應(yīng)用模塊需要加載,如果有,重復(fù)4—7完成應(yīng)用模塊的加載。
根據(jù)在web.xml中配置的初始化參數(shù),Servlet容器將決定在在容器的第一次啟動(dòng),或第一次客戶請(qǐng)求ActionServlet 的時(shí)機(jī)加載ActionServlet ,不管哪種方式加載,和其它Servlet一樣,ActionServlet 的init( )方法將被調(diào)用,開(kāi)始初始化過(guò)程。讓我們來(lái)看看在初始化過(guò)程中將發(fā)生些什么,理解了這些,對(duì)于我們debug和擴(kuò)展自己的應(yīng)用更加得心應(yīng)手。
1 初始化框架的內(nèi)部消息綁定,這些消息用來(lái)輸出提示,警告,和錯(cuò)誤信息到日志文件中。
org.apache.struts.action.ActionResources用來(lái)獲取內(nèi)部消息;
2 加載web.xml中定義的不同參數(shù),用以控制ActionServlet 的不同行為,這些參數(shù)包括 config, debug, detail, and convertNull ;
3 加載并初始化web.xml中定義的servlet 名稱和servlet映射信息。通過(guò)初始化,框架的各種DTD被注冊(cè),DTD用來(lái)在下一步校驗(yàn)配置文件的有效性;
4、為默認(rèn)應(yīng)用加載并初始化Struts配置文件,配置文件即初始化參數(shù)config指定的文件。默認(rèn)配置文件被解析, 產(chǎn)生一個(gè)ApplicationConfig對(duì)象存于ServletContext 中。可以通過(guò)關(guān)鍵字 org.apache.struts.action.APPLICATION 從ServletContext 中獲取ApplicationConfig;
5 Struts配置文件中指定的每一個(gè)消息資源都被加載,初始化,并存在ServletContext 的合適區(qū)域(基于每個(gè)message-resources元素的key 屬性),如果key 屬性沒(méi)有設(shè)置,則為org.apache.struts.action.MESSAGE;
6 Struts配置文件中聲明的每一個(gè)數(shù)據(jù)源被加載并且初始化,如果沒(méi)有配置數(shù)據(jù)源,這一步跳過(guò);
7 加載并初始化Struts配置文件中指定的插件。每一個(gè)插件的init()方法被調(diào)用;
8 當(dāng)默認(rèn)應(yīng)用加載完成,init()方法判斷是否有應(yīng)用模塊需要加載,如果有,重復(fù)4—7完成應(yīng)用模塊的加載。