SpringMvc主要是三個Servlet:HttpServletBean,FramwworkServlet,DispatcherServlet,它們是依次繼承的關係,其處理過程大體功能以下:app
1.HttpServletBean:沒有參與實際請求的處理。url
2.FramwworkServlet:將不一樣的請求合併到processRequest方法統一處理,processRequest方法中作了三件事。spa
a.調用了doService模板方法具體處理請求繼承
b.將當前請求的LocalContext和ServletRequestAttributes在處理請求前設置到了LocalContextHolder和RequestContextHolder,並在請求處理完成後回覆。接口
c.請求處理完成發佈了ServletRequstHandleEvent消息。get
3.DispatcherServlet:doService方法給request設置了一些屬性並將請求交給doDispatch方法具體處理。
io
SpringMvc九大組件:模板
1.HandlerMappping:它的做用是根據request找到相應的處理器Handler和Interceptors,該接口裏面只有一個方法:date
HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;request
2.HandlerAdapter:Handler適配器。HandlerApdater處理器適配器,做用是根據請求的url找處處理器的調用方法.
由於SpringMvc中的Handler能夠是任何形式,只要能處理請求。可是Servlet須要的處理方法的結構確是固定的,都是以request和response爲參數的方法,因此就須要HandlerApdater來適配。