1. 程式人生 > >帶著問題學 Spring MVC 原始碼: 一、概述

帶著問題學 Spring MVC 原始碼: 一、概述

摘要: 原創出處:www.bysocket.com 泥瓦匠BYSocket 希望轉載,保留摘要,謝謝!

簡單就好,生活可以很德國

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 等。

mvc%e6%a8%a1%e5%bc%8f

Q: Spring 還要什麼其他模組? Web?IOC 容器?AOP?※

IOC 容器模組、AOP 模組都是。還有資料訪問/整合、Web 等模組都是。這裡其他不展開講,其中 Web 模組建立在 IOC 容器之上,要記住。

來自官網的模組圖:spring-overview

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 的樣子,還有嗎? ※

哦。對了還有張圖:

mvc

所以重要的類還有 ViewResolver、HandleAdapter等。

Q: 謝謝,下篇聊什麼?

當然聊重要類的原始碼實現咯~,下篇見。

如以上文章或連結對你有幫助的話,別忘了在文章結尾處評論哈~ 你也可以點選頁面右邊“分享”懸浮按鈕哦,讓更多的人閱讀這篇文章。