帶著問題學 Spring MVC 源碼: 一、概述
Q:什麼是 Spring MVC ? ※
Spring MVC 是 Spring Web 的一個重要模塊。Spring 支持 Web 應用,Spring MVC 是對 MVC 模式的支持。
Q:MVC 模式? ※
MVC 模式是種經典的軟件架構,分 Model 模型、View 視圖及 Controller 控製器 三種角色。架構的意圖明顯區分三種角色的職責,使其不相互依賴。Java 領域最經典的實現 JSP + Servlet + JavaBean,後續也陸續出來了眾多優秀框架,SSH 中的 Struts ,還有 SSM 中的 Spring MVC 等。
Q: Spring 還要什麼其他模塊? Web?IOC 容器?AOP?※
IOC 容器模塊、AOP 模塊都是。還有數據訪問/集成、Web 等模塊都是。這裏其他不展開講,其中 Web 模塊建立在 IOC 容器之上,要記住。
Q: Web 模塊包含 springmvc 嗎? ※
包含。Web 模塊包含 spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet。其中 web-mvc 是我們要學習源碼包。
1. spring-web 模塊提供基本 Web 集成功能,包括初始化 IOC 容器等工作。
2. spring-webmvc 包含 MVC 模式的實現和 REST Web 服務的實現。該模塊基於了 spring-web 模塊。
資料來源自:官方文檔 MVC 章節,其他模塊具體參考官網。
Q: spring-webmvc 模塊具體包含什麼內容? ※
spring-webmvc 模塊裏麵包:
- org.springframework.web.servlet
提供與應用程序上下文基礎結構集成的 Servlet,以及 Spring web MVC 框架的核心接口和類。- org.springframework.web.servlet.mvc
Spring 附帶的 Servlet MVC 框架的標準控製器實現。
- org.springframework.web.servlet.mvc.annotation
用於基於注解的 Servlet MVC 控製器的支持包。- org.springframework.web.servlet.mvc.condition
用於根據條件匹配傳入請求的公共 MVC 邏輯。- org.springframework.web.servlet.mvc.method
用於處理程序方法處理的基於 Servlet 的基礎結構,基於在 org.springframework.web.method 包上。- org.springframework.web.servlet.view
提供標準的 View 和 ViewResolver 實現,包括自定義實現的抽象基類。
- org.springframework.web.servlet.view.freemarker
支持將 FreeMarker 集成為 Spring Web 視圖技術的類。- org.springframework.web.servlet.view.json
支持提供基於 JSON 序列化的 View 實現的類。上麵列出來核心的包。org.springframework.web.servlet.view 包中, View 視圖實現有常見的:JSON 、FreeMarker 等。org.springframework.web.servlet.mvc 包中,Controller 控製層實現包括了注解、程序方法處理等封裝。自然,看源碼先從 org.springframework.web.servlet 包看其核心的接口和類。
Q: 核心類和接口有哪些? ※
DispatcherServlet 類:調度HTTP請求控製器(或者處理器Handler)。
View 視圖層
ModelAndView 類:模型和視圖的持有者。
View 接口:MVC WEB 交互。該接口的實現負責呈現視圖或者暴露模型。
Controller 控製層
HandlerMapping 接口: 請求從 DispacherServlet 過來,該接口定義請求和處理程序對象之間的映射。
HandlerInterceptor 接口:處理程序的執行鏈接口。
Q: 又是 MVC 的樣子,還有嗎? ※
哦。對了還有張圖:
所以重要的類還有 ViewResolver、HandleAdapter等。
Q: 謝謝,下篇聊什麼?
當然聊重要類的源碼實現咯~,下篇見。
最後更新:2017-05-19 12:31:10