Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構(gòu),,可以選擇是使用內(nèi)置的 Spring Web 框架還是 Struts 這樣的 Web 框架,。通過策略接口,Spring 框架是高度可配置的,,而且包含多種視圖技術(shù),,例如 JavaServer Pages(JSP)技術(shù)、Velocity,、Tiles,、iText 和 POI。Spring MVC 框架并不知道使用的視圖,,所以不會強(qiáng)迫您只使用 JSP 技術(shù),。
Spring MVC 分離了控制器、模型對象,、分派器以及處理程序?qū)ο蟮慕巧?,這種分離讓它們更容易進(jìn)行定制。
Spring的MVC框架主要由DispatcherServlet,、處理器映射,、處理器(控制器)、視圖解析器,、視圖組成,。
SpringMVC原理圖
SpringMVC接口解釋
Spring提供的前端控制器,所有的請求都有經(jīng)過它來統(tǒng)一分發(fā),。在DispatcherServlet將請求分發(fā)給Spring Controller之前,,需要借助于Spring提供的HandlerMapping定位到具體的Controller。
能夠完成客戶請求到Controller映射,。
需要為并發(fā)用戶處理上述請求,,因此實現(xiàn)Controller接口時,必須保證線程安全并且可重用,。 Controller將處理用戶請求,,這和Struts Action扮演的角色是一致的。一旦Controller處理完用戶請求,,則返回ModelAndView對象給DispatcherServlet前端控制器,,ModelAndView中包含了模型(Model)和視圖(View)。 從宏觀角度考慮,DispatcherServlet是整個Web應(yīng)用的控制器,;從微觀考慮,Controller是單個Http請求處理過程中的控制器,,而ModelAndView是Http請求過程中返回的模型(Model)和視圖(View),。
Spring提供的視圖解析器(ViewResolver)在Web應(yīng)用中查找View對象,從而將相應(yīng)結(jié)果渲染給客戶,。 SpringMVC運行原理客戶端請求提交到DispatcherServlet 由DispatcherServlet控制器查詢一個或多個HandlerMapping,,找到處理請求的Controller DispatcherServlet將請求提交到Controller Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView DispatcherServlet查詢一個或多個ViewResoler視圖解析器,,找到ModelAndView指定的視圖 視圖負(fù)責(zé)將結(jié)果顯示到客戶端
截獲符合特定格式的URL請求,。 初始化DispatcherServlet上下文對應(yīng)的WebApplicationContext,,并將其與業(yè)務(wù)層、持久化層的WebApplicationContext建立關(guān)聯(lián),。 初始化Spring MVC的各個組成組件,,并裝配到DispatcherServlet中。
|