大部分java應用都是Web應用,展現層是Web應用不可忽略的重要環節。SPRing為展現層提供了一個優秀的Web框架-Spring MVC。和眾多其他Web框架一樣,它基于MVC設計理念,此外,它采用了松散耦合可插拔組件結構,比其他MVC框架更具擴展性和靈活性。
Spring MVC通過一套MVC注解,讓POJO成為處理請求的控制器,無須實現任何接口,同時,Spring MVC還支持REST風格的URL請求:注解驅動及REST風格的Spring MVC是Spring3.0最出彩的功能之一。此外,Sping MVC在數據綁定、視圖解析、本地化處理及靜態資源處理上都有許多不俗的表現。它在框架設計、擴展性、靈活性等方面全面超越了Struts、WebWork等MVC框架,從原來的追趕者一躍成為MVC的領跑者。
Spring MVC框架圍繞DispatcherServlet這個核心展開,DispatcherServlet是Sprrng MVC的總導演、總策劃,它負責截獲請求并將其分派給相應的處理器處理。Spring MVC框架包括注解驅動控制器、請求及響應的信息處理、視圖解析、本地化解析、上傳文件解析、異常處理以及表單標簽綁定等內容。
Spring MVC處理流程
從接受請求到返回響應,Spring MVC框架的眾多組件通力配合、各司其職,有條不紊地完成份內的工作。在整個框架中,DispatcherServlet處于核心的位置,它負責協調和組織不同組件以完成請求處理并返回響應的工作。和大多數Web MVC框架一樣,SpringMVC通過一個前端Servlet接收所有的請求,并將具體工作委托給其他組件進行處理,DispatcherServlet就是Spring MVC的前端Servlet。
1.整個過程始于客戶端發出一個HTTP請求,Web應用服務器接收到這個請求,如果匹配DispatcherServlet的請求映射路徑(在web.xml中指定),Web容器將該請求轉交給DispatcherServlet處理。
2.DispatcherServlet接收到這個請求后,將根據請求的信息(包括URL、HTTP方法、請求報文頭、請求參數、Cookie等)及HandlerMapping的配置找到處理請求的處理器( Handler)??蓪andlerMapping看成路由控制器,將Handler看成目標主機。值得注意的是:Spring MVC中并沒有定義一個Handler接口,實際上任何一個Object都可以成為請求處理器。
3.當DispatcherServlet根據HandlerMapping得到對應當前請求的Handler后,通過HandlerAdapter對Handler進行封裝,再以統一的適配器接口調用Handler。 HandlerAdapter是Spring MVC的框架級接口,顧名思義,HandlerAdapter是一個適配器,它用統一的接口對各種Handler方法進行調用。
4.處理器完成業務邏輯的處理后將運回一個ModelAndView給DispatcherServlet,ModelAndView包含了視圖邏輯名和模型數據信息。
5.ModelAndView中包含的是“邏輯視圖名”而非真正的視圖對象,DispatcherServlet借由ViewResolver完成邏輯視圖名到真實視圖對象的解析工作。
6.當得到真實的視圖對象View后,DispatcherServlet就使用這個View對象對ModelAndView中的模型數據進行視圖渲染。
7.最終客戶端得到的響應消息,可能是一個普通的HTML頁而,也可能是一個XML或JSON串,甚至是一張圖片或一個PDF文檔等不同的媒體形式。
新聞熱點
疑難解答