今天就跟大家聊聊有關(guān)使用Spring MVC如何啟動初始化,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了昆明免費建站歡迎大家使用!
Web容器初始化過程
web容器初始化的過程,其官方文檔給出了這樣的描述:
Instantiate an instance of each event listener identified by a
Instantiate an instance of each filter identified by a
Instantiate an instance of each servlet identified by a
其初始化的過程實際如下:
SpringMVC 的 web.xml配置
web.xml 配置代碼:
contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener mvc-dispatcher org.springframework.web.servlet.DispatcherServlet 1 mvc-dispatcher /
在 Servlet API中有一個ServletContextListener接口,它能夠監(jiān)聽ServletContext對象的生命周期,實際上就是監(jiān)聽Web應用的生命周期。當Servlet容器啟動或終止Web應用時,會觸發(fā)ServletContextEvent事件,該事件由ServletContextListener來處理。在ServletContextListener接口中定義了處理ServletContextEvent 事件的兩個方法contextInitialized()
和contextDestroyed()
。
ContextLoaderListener監(jiān)聽器的作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因為它實現(xiàn)了ServletContextListener這個接口,在web.xml配置了這個監(jiān)聽器,啟動容器時,就會默認執(zhí)行它實現(xiàn)的方法。由于在ContextLoaderListener中關(guān)聯(lián)了ContextLoader這個類,所以整個加載配置過程由ContextLoader來完成。
DispatchServlet初始化
在SpringMVC架構(gòu)中,DispatchServlet負責請求分發(fā),起到控制器的作用。下面詳細來解釋說明:
DispatchServlet名如其義,它的本質(zhì)上是一個Servlet,子類不斷的對HttpServlet父類進行方法擴展
HttpServlet有兩大核心方法:init()和service()方法。HttpServletBean重寫了init()
方法,在這部分,我們可以看到其實現(xiàn)思路:公共的部分統(tǒng)一來實現(xiàn),變化的部分統(tǒng)一來抽象,交給其子類來實現(xiàn),故用了abstract class來修飾類名。此外,HttpServletBean提供了一個HttpServlet的抽象實現(xiàn),使的Servlet不再關(guān)心init-param部分的賦值,讓servlet更關(guān)注于自身Bean初始化的實現(xiàn)
FrameworkServlet提供了整合web javabean和spring application context的整合方案。在源碼中可以看到通過執(zhí)行initWebApplicationContext()
方法和initFrameworkServlet()
方法實現(xiàn)
DispatchServlet是HTTP請求的中央調(diào)度處理器,它將web請求轉(zhuǎn)發(fā)給controller層處理,它提供了敏捷的映射和異常處理機制,DispatchServlet轉(zhuǎn)發(fā)請求的核心代碼在doService()方法中實現(xiàn)
DispatchServlet類和ContextLoaderListener類的關(guān)系圖:
用ContextLoaderListener初始化上下文,接著使用DispatchServlet來初始化WebMVC的上下文
看完上述內(nèi)容,你們對使用Spring MVC如何啟動初始化有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。