1. 程式人生 > >springmvc 學習1 springmvc的入口

springmvc 學習1 springmvc的入口

學習springmvc 首先了解springmvc大致都有什麼

Springmvc 的幾大模組

1. dispatcherServlet 2.handlermapping 3。controller 4.model 5modelandview 6.view

首先看dispatcherservlet

他是一個前端控制器  配置springmvc框架的時候 要在web.xml 中配置一個servlet 配置他的載入順序為1

<servlet>  
        <servlet-name>SpringMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:spring-mvc.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
        <async-supported>true</async-supported>  
    </servlet>

 <servlet-mapping>  
        <servlet-name>SpringMVC</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>

dispatcherservlet 的本質 是一個 servlet  

那麼 servlet 是有生命週期 的 init  service  destory 方法    servlet會在客戶端第一次載入請求的時候初始化servlet 載入並呼叫 init 方法

而在 配置load-on-startup 為 1 dispatcher 會在web容器啟動的時候載入

那麼 dispatcher 中的init 方法 在載入的時候都做了什麼呢?

看原始碼:

dispatcher是繼承FrameworkServlet   FrameworkServlet 中 並沒有init 方法 繼續向上找,找到 HttpServletBean 這個類中有重寫inti方法 並且這個init 方法 是被final修飾

說明這個方法是不可以被子類重寫的

HttpServletBean 這個實現了  HttpServlet    HttpServlet這個類 繼承GenericServlet    GenericServlet 實現了 Servlet介面

嘴上層servlet 是一個介面沒有具體實現, 而GenericServlet    init 的實現 是一個空方法 HttpServlet沒有實現init 說明是繼承了父類的 那麼 就只有HttpServletBean這個方法有

具體的實現 這個方法也就是springmvc的入口