java web mvc-01-Model-View-Controller 概覽

老马啸西风發表於2024-07-29

擴充閱讀

Java Servlet 教程-20-自己手寫實現 spring mvc 整體思路

Java Servlet 教程-21-自己手寫 spring mvc 簡單實現

Spring Web MVC-00-重學 mvc

mvc-01-Model-View-Controller 概覽

mvc-02-structs 介紹

web mvc-03-JFinal

web mvc-04-Apache Wicket

web mvc-05-JSF JavaServer Faces

web mvc-06-play framework intro

web mvc-07-Vaadin

web mvc-08-Grails

從零手寫元件系列

java 從零手寫 spring ioc 控制反轉

java 從零手寫 spring mvc

java 從零手寫 jdbc-pool 資料庫連線池

java 從零手寫 mybatis

java 從零手寫 hibernate

java 從零手寫 rpc 遠端呼叫

java 從零手寫 mq 訊息元件

java 從零手寫 cache 快取

java 從零手寫 nginx4j

java 從零手寫 tomcat

MVC 是什麼?

MVC(Model-View-Controller)是一種軟體設計模式,旨在將應用程式的內部邏輯分離成三個主要元件,以提高程式碼的可維護性和可擴充套件性。

每個元件負責不同的任務,互相之間解耦,使得應用程式更容易理解和修改。

1. 模型(Model):

模型是應用程式的資料和業務邏輯的表示。它負責處理資料的儲存、檢索、更新以及業務規則的實施。模型不依賴於使用者介面或控制流程,而是專注於處理應用程式的資料和業務邏輯。在典型的應用中,模型通常包含資料庫訪問、檔案操作、遠端服務呼叫等。

2. 檢視(View):

檢視是使用者介面的表示,負責呈現模型的資料給使用者以及接收使用者的輸入。檢視通常是被動的,它根據模型的狀態自動更新。檢視並不直接處理使用者輸入或應用程式的業務邏輯,而是將這些任務委託給控制器。在 Web 應用中,檢視可以是 HTML 頁面、CSS 樣式表等。

3. 控制器(Controller):

控制器是處理使用者輸入並相應地更新模型和檢視的元件。它充當模型和檢視之間的中介,負責協呼叫戶介面的響應和資料的更新。當使用者與應用程式進行互動時,控制器捕獲使用者輸入並呼叫適當的方法來更新模型或檢視。在 Web 應用中,控制器通常是處理 HTTP 請求的元件。

工作流程:

  1. 使用者輸入: 使用者與應用程式進行互動,提供輸入。

  2. 控制器處理: 控制器捕獲使用者輸入,根據輸入呼叫適當的方法。

  3. 模型更新: 模型處理業務邏輯,更新資料狀態。

  4. 檢視更新: 檢視根據新的模型狀態自動更新,將更新後的資料呈現給使用者。

  5. 使用者輸出: 使用者看到更新後的介面,可以再次提供輸入。

這個分層結構使得每個元件都可以獨立開發和測試,同時保持彼此之間的解耦。這種模式使得應用程式更容易擴充套件和維護,因為修改一個元件不會影響其他元件的功能。

示例:

考慮一個簡單的購物車應用:

  • 模型: 負責儲存商品資訊、計算總價等。
  • 檢視: 負責展示購物車中的商品和總價。
  • 控制器: 負責處理使用者的新增商品、刪除商品等操作,並更新模型和檢視。
User Input -> Controller -> Model (Update) -> View (Update) -> User Output

MVC 模式的靈活性和分離關注點的設計使其在各種軟體應用中廣泛應用,包括桌面應用、Web 應用和移動應用。

為什麼需要 mvc?有什麼優勢?

MVC 架構被廣泛採用的原因是它提供了許多優勢,使得軟體開發更加模組化、可維護和可擴充套件。

以下是一些使用 MVC 的優勢:

  1. 分離關注點(Separation of Concerns): MVC 將應用程式分為三個獨立的元件,每個元件負責不同的任務。這種分離簡化了程式碼的理解、維護和擴充套件,因為開發人員可以專注於特定方面的開發,而不必擔心整個應用程式的複雜性。

  2. 可維護性: 由於模型、檢視和控制器分離,對一個元件的修改不會影響其他元件。這使得修改、擴充套件和維護應用程式變得更加容易,因為不同的部分是相對獨立的。

  3. 可擴充套件性: 由於每個元件都是相對獨立的,因此可以輕鬆地新增新的功能或更改現有功能,而不會影響整體的應用程式結構。這使得應用程式更容易適應變化的需求。

  4. 可重用性: 每個元件都可以在不同的上下文中重複使用。例如,可以重用相同的模型邏輯在不同的檢視中展示資料。這種可重用性降低了程式碼冗餘,提高了開發效率。

  5. 易測試性: 由於模型、檢視和控制器是相對獨立的,可以更容易地進行單元測試。開發人員可以專注於測試每個元件的功能,確保其正常工作而不必考慮整個應用的複雜性。

  6. 提高團隊協作: MVC 提供了清晰的架構和元件劃分,有助於多個開發人員或團隊協同工作。每個元件都有特定的職責,因此不同的開發者可以專注於各自領域,降低了溝通和合作的難度。

  7. 支援並行開發: 由於 MVC 分離了關注點,不同的團隊成員可以並行開發各個元件,而不會相互干擾。這有助於提高開發速度和整體專案的交付效率。

總體而言,MVC 架構的引入使得軟體開發更加模組化、靈活和可維護,有助於構建健壯、可擴充套件的應用程式。

java 的 mvc 框架對比

Java 的 MVC 框架有很多,以下是一些常見和流行的 Java MVC 框架:

框架 主要特點和設計理念 適用場景
Spring MVC - 繼承 Spring 框架,強大的生態系統
- 註解驅動的開發
- 高度可定製化
企業級應用程式,大型專案
Struts 2 - 繼承自 Struts 框架
- 攔截器機制
- 標籤庫和表單驗證
Web 應用程式,中小型專案
JSF - JavaServer Faces 規範
- 元件化開發方式
- 強調可重用元件
複雜的使用者介面,企業級應用程式
Play Framework - 響應式程式設計
- 簡化開發流程,約定大於配置
- 支援 Scala 語言
快速開發,輕量級 Web 應用,RESTful 服務
Vaadin - 用 Java 編寫使用者介面邏輯
- 伺服器端渲染
- 資料繫結和元件化
企業級應用程式,需要強大使用者介面的專案
Grails - 基於 Groovy 的框架
- 領域特定語言(DSL)
- 使用 Spring MVC
快速開發,Groovy 語言,中小型專案
Apache Wicket - 物件導向的程式設計方式
- 元件化開發,面向元件程式設計
- 伺服器端渲染
複雜的使用者介面,物件導向的設計,中小型專案
JFinal - 基於 Java 的輕量級框架
- 簡單易用,約定大於配置
- ActiveRecord 模式
快速開發,中小型專案

相關文章