javascript
SpringMVC原理
Spring MVC的功能組件
Spring通過一系列組件實現功能,這些組件包括DispatcherServlet(前端控制器)、HandlerMapping(處理器映射器)Handler(處理器)、HandlAdapter(處理器適配器)、ViewResolver(視圖解析器)等。
前端控制器負責攔截客戶端請求并分發給其他組件,它是整個流程控制的中心,負責調度其他組件的執行,降低各組件之間的耦合,提升整體效率。前端控制器由框架提供,在程序運行過程中自動實現功能。
處理器映射器負責根據客戶端請求的URL尋找處理器,Spring MVC中提供了配置文件、注解等映射方式,這些映射方式將由相應的處理器映射器負責處理。處理器映射器由框架提供,在程序運行過程中自動實現功能。
處理器負責對客戶端的請求進行處理,由于處理請求涉及到具體的業務邏輯,因此,開發者需要在處理器中編寫處理業務邏輯的代碼。
處理器適配器負責根據特定的規則對處理器進行執行,它可以執行多種類型的處理器,是設計模式中適配器模式的具體應用。處理器適配器由框架提供,在程序運行過程中自動實現功能。
視圖解析器負責視圖解析,它可以將處理結果生成View(視圖)并展示給用戶。視圖解析器由框架提供,在程序運行過程中自動實現功能,但是View需要由開發者根據具體需求編寫。
springmvc 框架提供了很多的 View 視圖類型的支持,包括:jstlView、freemarkerView、pdfView 等。 一般情況下需要通過頁面標簽或頁面模版技術將模型數據通過頁面展示給用戶,需要由程序員根據業務需求開發具體的頁面。
說明:在 springmvc 的各個組件中,處理器映射器、處理器適配器、視圖解析器稱為 springmvc 的三大組件。 需要用戶開發的組件有 handler、 view
Spring MVC的功能流程
- Spring MVC的工作流程主要圍繞DispatcherServlet(前端控制器)展開,前端控制器負責攔截客戶端發送的請求并將它分發給對應的處理器處理。因此,前端控制器是Spring MVC整個流程控制的中心。
- Spring MVC的工作流程,如圖所示。
- 圖中展示了Spring MVC從接收請求到響應的工作流程。在運行過程中,Spring MVC框架的眾多組件協同工作,各司其職,共同支撐了Spring MVC框架的功能。通常情況下,Spring MVC在處理客戶端請求時要完成以下步驟。
- 以上7個步驟是Spring MVC在處理客戶端請求時的基本流程,這些步驟中的大部分是Spring MVC自動完成的。由于Handler需要處理具體業務邏輯,View需要向用戶展示頁面,因此,開發者只需編寫與Handler和View相關的內容。
中心控制器
-
Spring的web框架圍繞DispatcherServlet設計。 DispatcherServlet的作用是將請求分發到不同的處理器。從Spring 2.5開始,使用Java 5或者以上版本的用戶可以采用基于注解的controller聲明方式。
-
Spring MVC框架像許多其他MVC框架一樣, 以請求為驅動 , 圍繞一個中心Servlet分派請求及提供其他功能,DispatcherServlet是一個實際的Servlet (它繼承自HttpServlet 基類)。
SpringMVC執行原理
當發起請求時被前置的控制器攔截到請求,根據請求參數生成代理請求,找到請求對應的實際控制器,控制器處理請求,創建數據模型,訪問數據庫,將模型響應給中心控制器,控制器使用模型與視圖渲染視圖結果,將結果返回給中心控制器,再將結果返回給請求者。
圖為SpringMVC的一個較完整的流程圖,實線表示SpringMVC框架提供的技術,不需要開發者實現,虛線表示需要開發者實現。
簡要分析執行流程
我們假設請求的url為 : http://localhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080 服務器域名
SpringMVC 部署在服務器上的web站點
hello 表示控制器
通過分析,如上url表示為:請求位于服務器localhost:8080上的SpringMVC站點的hello控制器。
1.客戶端請求提交到DispatcherServlet;
2.由DispatcherServlet控制器尋找一個或多個HandlerMapping,找到處理請求的Controller;
3.DispatcherServlet將請求提交到Controller;
4.Controller調用業務邏輯處理后,返回ModelAndView;
5.DispatcherServlet尋找一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖;
6.視圖負責將結果顯示到客戶端。
1、 用戶發送請求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到請求調用HandlerMapping處理器映射器。
3、 處理器映射器找到具體的處理器(可以根據xml配置、注解進行查找),生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
4、 DispatcherServlet調用HandlerAdapter處理器適配器。
5、 HandlerAdapter經過適配調用具體的處理器(Controller,也叫后端控制器)。
6、 Controller執行完成返回ModelAndView。
7、 HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet。
8、 DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器。
9、 ViewReslover解析后返回具體View。
10、DispatcherServlet根據View進行渲染視圖(即將模型數據填充至視圖中)。
11、 DispatcherServlet響應用戶。
參考鏈接
總結
以上是生活随笔為你收集整理的SpringMVC原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 安装Qt以及配置
- 下一篇: gradle idea java ssm