本文是專欄文章(
SpringMVC深度探險)系列的文章之一,博客地址爲:
http://downpour.iteye.com/blog/1341459。
在上一篇文章中,咱們給出了構成SpringMVC應用程序的三要素以及三要素的設計過程。讓咱們來概括一下整個設計過程當中的一些要點:
- SpringMVC將Http處理流程抽象爲一個又一個處理單元
- SpringMVC定義了一系列組件(接口)與全部的處理單元對應起來
- SpringMVC由DispatcherServlet貫穿始終,並將全部的組件串聯起來
在整個過程當中,組件和DispatcherServlet老是維持着一個相互支撐的關係:
- DispatcherServlet —— 串聯起整個邏輯主線,是整個框架的心臟
- 組件 —— 邏輯處理單元的程序化表示,起到承上啓下的做用,是SpringMVC行爲模式的實際承載者
在本系列接下來的兩篇文章中,咱們將分別討論DispatcherServlet和組件的相關內容。本文討論DispatcherServlet,而下一篇則重點分析組件。
有關DispatcherServlet,咱們想從構成DispatcherServlet的體系結構入手,再根據不一樣的邏輯主線分別加以分析,但願可以幫助讀者整理出學習SpringMVC核心類的思路。
DispatcherServlet的體系結構
經過不一樣的角度來觀察DispatcherServlet會獲得不一樣的結論。咱們在這裏選取了三個不一樣的角度:運行特性、繼承結構和數據結構。
【運行主線】
從DispatcherServlet所實現的接口來看,DispatcherServlet的核心本質:
是一個Servlet。這個結論彷佛很幼稚,不過這個幼稚的結論卻蘊含了一個對整個框架都相當重要的內在原則:
Servlet能夠根據其特性進行運行主線的劃分。 根據Servlet規範的定義,Servlet中的兩大核心方法init方法和service方法,它們的運行時間和觸發條件都大相徑庭: