摘要: 原創出處:www.bysocket.com 泥瓦匠BYSocket 但願轉載,保留摘要,謝謝!html
簡單就好,生活能夠很德國web
Q:什麼是 Spring MVC ? ※spring
Spring MVC 是 Spring Web 的一個重要模塊。Spring 支持 Web 應用,Spring MVC 是對 MVC 模式的支持。json
Q:MVC 模式? ※websocket
MVC 模式是種經典的軟件架構,分 Model 模型、View 視圖及 Controller 控制器 三種角色。架構的意圖明顯區分三種角色的職責,使其不相互依賴。Java 領域最經典的實現 JSP + Servlet + JavaBean,後續也陸續出來了衆多優秀框架,SSH 中的 Struts ,還有 SSM 中的 Spring MVC 等。架構
Q: Spring 還要什麼其餘模塊? Web?IOC 容器?AOP?※mvc
IOC 容器模塊、AOP 模塊都是。還有數據訪問/集成、Web 等模塊都是。這裏其餘不展開講,其中 Web 模塊創建在 IOC 容器之上,要記住。app
Q: Web 模塊包含 springmvc 嗎? ※socket
包含。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: 謝謝,下篇聊什麼?
固然聊重要類的源碼實現咯~,下篇見。
如以上文章或連接對你有幫助的話,別忘了在文章結尾處評論哈~ 你也能夠點擊頁面右邊「分享」懸浮按鈕哦,讓更多的人閱讀這篇文章。