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的入口