Java MVC 架構初學者指南
已發表: 2018-04-10如果您與 Web 開發場景相關,那麼您肯定會遇到數百次(甚至更多)首字母縮略詞“MVC”。 MVC 是當今 Web 編程世界中談論最多的設計模式之一,這是正確的。 在本文中,我們將帶您了解 MVC 架構的世界。 我們將討論 MVC 的基礎知識,它的優點,最後,一個簡單的代碼將幫助您以更清晰的方式理解 Java 中的 MVC 實現。
目錄
MVC 架構到底是什麼?
在我們深入了解它的技術細節之前,讓我們先搞清楚一些事情——MVC 不是一種設計模式,它是一種構建應用程序的方式。 近年來,Web 應用程序廣泛使用 MVC 架構,因此很自然地將其混淆為 Web 應用程序專有的設計模式。 但是,讓我們告訴您,MVC 最早是在 1979 年被描述的——在 WWW 時代之前,還沒有 Web 應用程序的概念。 今天用於 Web 應用程序的架構是對原始模式的改編。
事實上,這種架構最初包含在兩個主要的 Web 開發框架中——Struts 和 Ruby on Rails。 這兩種環境為後來出現的大多數 Web 框架鋪平了道路——因此這種架構的流行度不斷上升。
MVC 架構模式遵循一個基本思想——我們必須在以下基礎上分離任何應用程序中的職責:
- 模型:處理數據和業務邏輯。
- 查看:在需要時向用戶展示數據。
- 控制器:處理用戶請求並獲取必要的資源。
每個組件都有一組劃定的任務,以確保整個應用程序的平穩運行以及完整的模塊化。 讓我們更詳細地了解這些組件中的每一個。
控制器
控制器就像應用程序的管家——它執行模型和視圖之間的協調來滿足用戶請求。 用戶請求以 HTTP get 或 post 請求的形式接收 - 例如,當用戶單擊任何 GUI 元素以執行任何操作時。
控制器的主要功能是調用模型並與模型協調以獲取執行所需的任何必要資源。 通常,在接收到用戶請求時,控制器會為手頭的任務調用適當的模型。
模型
模型很簡單,就是我們應用程序的數據。 數據以易於存儲、檢索和編輯的方式“建模” 。 該模型是我們如何將規則應用於我們的數據,最終代表我們的應用程序管理的概念。
對於任何軟件應用程序,一切都被建模為可以輕鬆處理的數據。 什麼是應用程序的用戶、書籍或消息? 沒什麼,只有必鬚根據特定規則處理的數據。 例如,日期不得早於當前日期,電子郵件格式必須正確,姓名不得超過“x”個字符等。
每當用戶從控制器發出任何請求時,它都會聯繫適當的模型,該模型返回用戶請求的數據表示。 無論我們希望如何向用戶顯示,該模型對於特定作品都是相同的。 這就是為什麼我們可以選擇任何可用的視圖來渲染模型數據。
此外,模型還包含在模型數據發生任何變化時更新相關控制器的邏輯。

看法
顧名思義,視圖負責渲染從模型接收到的數據。 可能有預先設計的模板,您可以在其中擬合數據,根據要求,每個模型甚至可能有幾個不同的視圖。
任何 Web 應用程序的結構都牢記這三個核心組件。 可能有一個主控制器負責接收所有請求並調用特定控制器執行特定操作。 讓我們通過一個示例更好地了解 MVC 架構下 Web 應用程序的工作原理。
讓我們看一個例子
讓我們以在線文具店為例。 用戶可以查看商品、購買、將商品添加到購物車、將商品添加到當前訂單,甚至添加/刪除商品(如果他是管理員)。
現在,讓我們看看當用戶單擊標題“筆”以查看筆列表時會發生什麼。
我們的應用程序將有一個特定的控制器來處理與筆相關的所有查詢。 假設它被稱為“pens_controller.php”。 我們還將有一個模型來存儲我們所擁有的筆的數據——我們稱之為“pens_model.php”。 最後,我們將有幾個視圖來展示數據——一個鋼筆列表、一個顯示鋼筆的表格、一個編輯列表的頁面等。
下圖顯示了從用戶單擊“筆”到結果呈現在他面前的完整控制流程:
首先,“pens_controller.php”將用戶請求 (1) 處理為 GET 或 POST 請求。 我們還可以有一個“index.php”,它是中央控制器,它會在需要時調用“pens_controller”。
然後控制器檢查請求和參數並調用所需的模型——在本例中為“pens_model.php”。 控制器要求模型返回可用筆列表 (2)。
現在,模型在數據庫中搜索必要的信息 (3),必要時應用邏輯,並將數據返回給控制器 (4)。
然後控制器選擇適當的視圖 (5) 並呈現數據 (6 和 7)。 如果請求來自手持設備,則將使用適合它的視圖,或者如果用戶選擇了特定主題,則將選擇其視圖 - 依此類推。
如何成為全棧開發人員
MVC 架構的優勢
如今,應用程序開發人員面臨的一個常見問題是對不同類型設備的支持。 MVC 架構解決了這個問題,因為開發人員可以為不同的設備創建不同的接口,並且根據從哪個設備發出請求,控制器將選擇合適的視圖。 無論使用何種設備,該模型都會發送相同的數據,從而確保所有設備之間的完全一致性。
MVC 分離很好地將視圖與業務邏輯隔離開來。 它還通過保持代碼和工作流程的結構化來降低設計大型應用程序的複雜性。 這使得整個代碼更易於維護、測試、調試和重用。
使用 Java 實現 MVC 的簡單實現
我們將有以下三個:
- StudentObject:模型。
- StudentView:查看課程以在控制台上打印詳細信息。
- StudentController:將數據存儲在studentObject中並相應更新StudentView的控制器
第 1 步:創建模型
公共課學生{ 私有字符串rollNo ; 私有字符串名稱; 公共字符串getRollNo () { 返回捲號; } 公共無效setRollNo (字符串rollNo ) { 這個。 卷號=卷號; } 公共字符串getName () { 返回名稱; } 公共無效setName (字符串名稱) { 這個。 名稱=名稱; } }
代碼是不言自明的。 它由獲取/設置卷號和學生姓名的功能組成。 我們稱之為“student.java”。
第 2 步:創建視圖

公共課StudentView { public void printStudentDetails ( String studentName , String studentRollNo ){ 系統。 出來。 println ( "學生:" ); 系統。 出來。 println ( "姓名:" +學生姓名); 系統。 出來。 println ( "卷號:" + studentRollNo ); } }
這只是將值打印到控制台。 我們稱之為“studentView.java”。
第三步:創建控制器
公共類StudentController { 私人學生模型; 私人學生視圖; public StudentController (學生模型, StudentView視圖){ 這個。 模型=模型; 這個。 視圖=視圖; } 公共無效setStudentName (字符串名稱){ 模型。 設置名稱(名稱); } 公共字符串getStudentName (){ 返回模型。 獲取名稱(); } 公共無效setStudentRollNo (字符串rollNo ){ 模型。 setRollNo ( rollNo ); } 公共字符串getStudentRollNo (){ 返回模型。 getRollNo (); } 公共無效更新視圖(){ 查看。 printStudentDetails ( model.getName ( ), model.getRollNo ( ) ) ; } }
將此稱為“StudentController.java”。 粗略看一眼就會告訴你,這個控制器只是負責調用模型來獲取/設置數據,然後更新視圖。
現在,讓我們看看所有這些是如何联系在一起的。
第 4 步:創建主 Java 文件
公共類MVCPatternDemo { 公共靜態無效主要(字符串[]參數) { //根據他的捲號從數據庫中獲取學生記錄 學生模型= retriveStudentFromDatabase (); //創建一個視圖:在控制台上寫入學生詳細信息 StudentView視圖= new StudentView (); StudentController控制器=新StudentController (模型,視圖); 控制器。 更新視圖(); //更新模型數據 控制器。 setStudentName ( “約翰” ); 控制器。 更新視圖(); } 私人靜態學生retriveStudentFromDatabase (){ 學生學生=新學生(); 學生。 設置名稱( “羅伯特” ); 學生。 setRollNo ( "10" ); 返校生; } }
這稱為“MVCPatternDemo.java”。 如您所見,它從數據庫或函數中獲取學生數據(在本例中,我們使用函數來設置值)並將其推送到 Student 模型。 然後,它初始化我們之前創建的視圖。
此外,它還初始化我們的控制器並將其綁定到模型和視圖。 updateView() 方法是控制器的一部分,用於更新控制台上的學生詳細信息。
第 5 步:測試結果
如果一切順利,結果應該是:

學生: 姓名:羅伯特 卷號:10 學生: 姓名:約翰 卷號:10
如果你得到這個作為輸出,恭喜! 您已經使用 Java 成功實現了 MVC 架構,儘管是針對一個簡單的應用程序。 無論多麼簡單,這個應用程序都足以展示 MVC 架構的強大功能。
15 個必須知道的 Spring MVC 面試問題
包起來…
在說了這麼多之後,現在很難再強調 MVC 架構在任何 Web/桌面應用程序中的強大功能了。 它為您的代碼提供了全新級別的模塊化,使其更具可讀性和可維護性。 因此,如果您想在應用程序開發人員的職業生涯中達到新的高度,那麼掌握 MVC 架構及其工作應該是您的首要任務。
報名參加世界頂尖大學的軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
請發表評論,讓我們知道您喜歡這篇文章!
