成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

SpringMVC:SpringMVC啟動初始化過程

Bowman_han / 959人閱讀

摘要:當(dāng)容器啟動或終止應(yīng)用時,會觸發(fā)事件,該事件由來處理。監(jiān)聽器的作用就是啟動容器時,自動裝配的配置信息。初始化在架構(gòu)中,負(fù)責(zé)請求分發(fā),起到控制器的作用。

??公司項(xiàng)目使用 struts2 作為控制層框架,為了實(shí)現(xiàn)前后端分離,計(jì)劃將 struts2 切換為 SpringMVC ,因此,這段時間都在學(xué)習(xí)新的框架,《Spring實(shí)戰(zhàn)》是一本好書,里面對 Spring 的原理實(shí)現(xiàn)以及應(yīng)用都說得很透徹,強(qiáng)烈推薦,但是如果想深挖 Spring 的實(shí)現(xiàn),還是要從他的源碼入手,這次,就先從 SpringMVC 初始化開始。

Web 容器初始化過程

SpringMVC的Web.xml配置

DispatchServlet初始化

Web容器初始化過程

web容器初始化的過程,其官方文檔給出了這樣的描述:

Instantiate an instance of each event listener identified by a element in the deployment descriptor.
For instantiated listener instances that implement ServletContextListener, call the contextInitialized() method.

Instantiate an instance of each filter identified by a element in the deployment descriptor and call each filter instance"s init() method.

Instantiate an instance of each servlet identified by a element that includes a element in the order defined by the load-on-startup element values, and call each servlet instance"s init() method.

其初始化的過程實(shí)際如下:

SpringMVC 的 web.xml配置

web.xml 配置代碼:

  
  
   
      
        contextConfigLocation  
        classpath:applicationContext.xml  
      
  
      
        org.springframework.web.context.ContextLoaderListener  
      
  
  
      
        mvc-dispatcher  
          
            org.springframework.web.servlet.DispatcherServlet  
          
        1  
      
                                                                                                                                           
      
        mvc-dispatcher  
        /  
      
  
  

標(biāo)簽中定義了spring容器加載器

標(biāo)簽中定義了spring前端控制器

??在 Servlet API中有一個ServletContextListener接口,它能夠監(jiān)聽ServletContext對象的生命周期,實(shí)際上就是監(jiān)聽Web應(yīng)用的生命周期。當(dāng)Servlet容器啟動或終止Web應(yīng)用時,會觸發(fā)ServletContextEvent事件,該事件由ServletContextListener來處理。在ServletContextListener接口中定義了處理ServletContextEvent 事件的兩個方法contextInitialized()和contextDestroyed()。

??ContextLoaderListener監(jiān)聽器的作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因?yàn)樗鼘?shí)現(xiàn)了ServletContextListener這個接口,在web.xml配置了這個監(jiān)聽器,啟動容器時,就會默認(rèn)執(zhí)行它實(shí)現(xiàn)的方法。由于在ContextLoaderListener中關(guān)聯(lián)了ContextLoader這個類,所以整個加載配置過程由ContextLoader來完成。

DispatchServlet初始化

在SpringMVC架構(gòu)中,DispatchServlet負(fù)責(zé)請求分發(fā),起到控制器的作用。下面詳細(xì)來解釋說明:

DispatchServlet名如其義,它的本質(zhì)上是一個Servlet,子類不斷的對HttpServlet父類進(jìn)行方法擴(kuò)展

HttpServlet有兩大核心方法:init()和service()方法。HttpServletBean重寫了init()方法,在這部分,我們可以看到其實(shí)現(xiàn)思路:公共的部分統(tǒng)一來實(shí)現(xiàn),變化的部分統(tǒng)一來抽象,交給其子類來實(shí)現(xiàn),故用了abstract class來修飾類名。此外,HttpServletBean提供了一個HttpServlet的抽象實(shí)現(xiàn),使的Servlet不再關(guān)心init-param部分的賦值,讓servlet更關(guān)注于自身Bean初始化的實(shí)現(xiàn)

FrameworkServlet提供了整合web javabean和spring application context的整合方案。在源碼中可以看到通過執(zhí)行initWebApplicationContext()方法和initFrameworkServlet()方法實(shí)現(xiàn)

DispatchServlet是HTTP請求的中央調(diào)度處理器,它將web請求轉(zhuǎn)發(fā)給controller層處理,它提供了敏捷的映射和異常處理機(jī)制,DispatchServlet轉(zhuǎn)發(fā)請求的核心代碼在doService()方法中實(shí)現(xiàn)

DispatchServlet類和ContextLoaderListener類的關(guān)系圖:

用ContextLoaderListener初始化上下文,接著使用DispatchServlet來初始化WebMVC的上下文

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67387.html

相關(guān)文章

  • “過時”的SpringMVC我們到底在用什么?深入分析DispatchServlet源碼

    摘要:問題來了,我們到底還在用嗎答案是,不全用。后者是初始化的配置,主要是的配置。啟動類測試啟動項(xiàng)目后,在瀏覽器里面輸入。通過查詢已裝載的,并且支持該而獲取的。按照前面對的描述,對于而言,這個必定是。的核心在的方法中。 之前已經(jīng)分析過了Spring的IOC(《零基礎(chǔ)帶你看Spring源碼——IOC控制反轉(zhuǎn)》)與AOP(《從源碼入手,一文帶你讀懂Spring AOP面向切面編程》)的源碼,本次...

    array_huang 評論0 收藏0
  • 這一次,我連 web.xml 都不要了,純 Java 搭建 SSM 環(huán)境!

    摘要:環(huán)境要求使用純來搭建環(huán)境,要求的版本必須在以上。即視圖解析器解析文件上傳等等,如果都不需要配置的話,這樣就可以了??梢詫⒁粋€字符串轉(zhuǎn)為對象,也可以將一個對象轉(zhuǎn)為字符串,實(shí)際上它的底層還是依賴于具體的庫。中,默認(rèn)提供了和的,分別是和。 在 Spring Boot 項(xiàng)目中,正常來說是不存在 XML 配置,這是因?yàn)?Spring Boot 不推薦使用 XML ,注意,并非不支持,Spring...

    liaorio 評論0 收藏0
  • SpringMVC之源碼分析--啟動過程

    摘要:核心類類的繼承關(guān)系前端控制器是規(guī)范中的核心類,實(shí)現(xiàn)接口,繼承此類用于處理用戶請求。主要配置中初始化參數(shù)。 Spring MVC 核心類 類的繼承關(guān)系Spring MVC前端控制器DispatcherServlet-->FrameworkServlet-->HttpServletBean-->HttpServletshowImg(https://segmentfault.com/img/...

    Olivia 評論0 收藏0
  • SpringMVC之源碼分析--HandlerMapping(一)

    摘要:接口接口作用是將請求映射到處理程序,以及預(yù)處理和處理后的攔截器列表,映射是基于一些標(biāo)準(zhǔn)的,其中的細(xì)節(jié)因不同的實(shí)現(xiàn)而不相同。該參數(shù)是類型,作用是檢查所有的映射解析器或使用或?yàn)榈?,默認(rèn)為,即從上下文中檢查所有的。 概述 在Spring MVC啟動章節(jié)https://segmentfault.com/a/1190000014674239,介紹到了DispatcherServlet的onRef...

    ralap 評論0 收藏0
  • 從SpringBoot到SpringMVC

    摘要:概述用久了,深受其約定大于配置的便利性毒害之后,我想回歸到時代,看看開發(fā)模式中用戶是如何參與的。備注當(dāng)然本文所使用的全是非注解的配置方法,即需要在中進(jìn)行配置并且需要遵循各種實(shí)現(xiàn)原則。而更加通用主流的基于注解的配置方法將在后續(xù)文章中詳述。 showImg(https://segmentfault.com/img/remote/1460000015244684); 概述 用久了Sprin...

    xavier 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<