SpringMVC框架介紹
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品请垛,已經(jīng)融合在Spring Web Flow里面。
Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊甜滨。使用 Spring 可插入的 MVC 架構(gòu),可以選擇是使用內(nèi)置的 Spring Web 框架還是 Struts 這樣的 Web 框架。通過(guò)策略接口,Spring 框架是高度可配置的费变,而且包含多種視圖技術(shù),例如 JavaServer Pages(JSP)技術(shù)圣贸、Velocity挚歧、Tiles、iText 和 POI吁峻。Spring MVC 框架并不知道使用的視圖滑负,所以不會(huì)強(qiáng)迫您只使用 JSP 技術(shù)。
Spring MVC 分離了控制器用含、模型對(duì)象矮慕、分派器以及處理程序?qū)ο蟮慕巧@種分離讓它們更容易進(jìn)行定制啄骇。
Spring的MVC框架主要由DispatcherServlet痴鳄、處理器映射、處理器(控制器)缸夹、視圖解析器痪寻、視圖組成。
SpringMVC原理圖
SpringMVC接口解釋
DispatcherServlet:
Spring提供的前端控制器虽惭,所有的請(qǐng)求都有經(jīng)過(guò)它來(lái)統(tǒng)一分發(fā)橡类。在DispatcherServlet將請(qǐng)求分發(fā)給Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具體的Controller芽唇。
HandlerMapping:
能夠完成客戶請(qǐng)求到Controller映射猫态。
Controller:
需要為并發(fā)用戶處理上述請(qǐng)求,因此實(shí)現(xiàn)Controller接口時(shí)披摄,必須保證線程安全并且可重用亲雪。
Controller將處理用戶請(qǐng)求,這和Struts Action扮演的角色是一致的疚膊。一旦Controller處理完用戶請(qǐng)求义辕,則返回ModelAndView對(duì)象給DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和視圖(View)寓盗。
從宏觀角度考慮灌砖,DispatcherServlet是整個(gè)Web應(yīng)用的控制器;從微觀考慮傀蚌,Controller是單個(gè)Http請(qǐng)求處理過(guò)程中的控制器基显,而ModelAndView是Http請(qǐng)求過(guò)程中返回的模型(Model)和視圖(View)。
ViewResolver:
Spring提供的視圖解析器(ViewResolver)在Web應(yīng)用中查找View對(duì)象善炫,從而將相應(yīng)結(jié)果渲染給客戶撩幽。
SpringMVC運(yùn)行原理
客戶端請(qǐng)求提交到DispatcherServlet
由DispatcherServlet控制器查詢一個(gè)或多個(gè)HandlerMapping,找到處理請(qǐng)求的Controller
DispatcherServlet將請(qǐng)求提交到Controller
Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView
DispatcherServlet查詢一個(gè)或多個(gè)ViewResoler視圖解析器窜醉,找到ModelAndView指定的視圖
視圖負(fù)責(zé)將結(jié)果顯示到客戶端
DispatcherServlet是整個(gè)Spring MVC的核心宪萄。它負(fù)責(zé)接收HTTP請(qǐng)求組織協(xié)調(diào)Spring MVC的各個(gè)組成部分。其主要工作有以下三項(xiàng):
截獲符合特定格式的URL請(qǐng)求榨惰。
初始化DispatcherServlet上下文對(duì)應(yīng)的WebApplicationContext拜英,并將其與業(yè)務(wù)層、持久化層的WebApplicationContext建立關(guān)聯(lián)琅催。
初始化Spring MVC的各個(gè)組成組件居凶,并裝配到DispatcherServlet中。