[摘要] 隨著開源軟件的興起,各種框架也紛紛出現,在實際軟件開發中運用這些框架,大大降低了J2EE開發的復雜度和難度,降低了開發成本,本文闡述了基于MVC模型的JAVAWeb應用軟件開發模式,并結合一個實例討論如何設計基于MVC框架的應用,同時也分析了使用框架開發web應用的優勢。
[關鍵詞] Model(模型)View(視圖)Controller(控制器)MVC
一、MVC模式
將JSP頁面中嵌入的流程控制代碼和部分的邏輯處理代碼提取出來,放到一個單獨的角色中,這個角色就是控制器角色了。這樣的架構就符合MVC架構模式,MVC即模型——視圖——控制器(Model-View-Control)。
MVC架構有助于將應用程序分割成若干邏輯部件,使程序設計變得更加容易。MVC架構提供了一種按功能參各種對象進行分割的方法,其目的是為了將各對象間的耦合程序降至最低。MVC框架原本是為了將傳統的輸入(input)、處理(processing)和輸出(output)任務運用到圖形化用戶交互模型中而設計的,但是,將這些概念運用到基于Web的企業級多層應用領域也是很適合的。
圖1MVC模型、視圖、控制器的關系圖
在一個MVC架構中,一個應用被分成三個部分,模型(Model)、視圖(View)和控制器(Control)。
模型代表應用程序的數據以用于訪問控制和修改這些數據的業務規則。當模型發生變化時,它會通知視圖,并為視圖提供查詢模型相關狀態的能力。同時,它也為控制器提供訪問封閉在模型內部的應用程序功能的能力。
視圖用開組織模型的內容。它從模型那里獲得數據并指定這些數據如何表現。當模型變化時,視圖負責維護數據表現的一致性。視圖同時將用戶的請求通知控制器。
控制器定義了應用程序的行為。它負責對來自視圖的用戶請求進行解釋,并把這些請求映射成相應的行為,這些行為由模型負責實現。在獨立運行的GUI客戶端,用戶的請求可能是一些鼠標單擊或是菜單選擇操作。在一個WEB應用程序中,它們的表現形式可能是一些來自客戶端GET或POST的HTTP請求。圖1描述了在MVC應用程序中模型、視圖、控制器三部分的關系。
在這種開發模式下,控制器的角色由Servlet實現,視圖的角色由Jsp頁面實現,模型的角色由JavaBean來實現,該模型的架構圖如圖2所示。
圖2JSP開發模型
Servlet充當控制的角色,它接受請求,并且根據請求信息將它們分發給適當的JSP頁面來產生響應。Servlet控制器還根據JSP視圖的需求生成JavaBean的實例并輸出給JSP環境。JSP視圖可以通過直接調用JavaBean實例的方法或使用
二、基于MVC框架的論壇功能的實現
論壇是電子商務網站中一種常見的功能,它為上網用戶提供了一個自由的討論區。用戶可以根據需要在論壇上發表文章,提出問題并表達自己的觀點,俗稱發帖子或灌水。與此同時,上網用戶也可以在論壇中瀏覽其他人發表文章,并能對該文章進行回復。一個典型的論壇系統一般應提供如下功能:會員管理、討論區文章查閱、發表新文章、后臺管理。
運用MVC框架實現論壇,首先把應用分解為模型、視圖和控制器來實現,這樣就將業務邏輯和表現層分開,提高軟件可擴展性和良好的邏輯性,改變了傳統Web開發設計模式。下面將以論壇中用戶登陸為例按照MVC架構來詳述實現過程。
1.創建視圖組件
在視圖中主要包括兩個組件:用戶登錄頁面Login.jsp,登錄失敗頁面error.jsp;是用戶登錄失敗后顯示的頁面。它們都保存在Web應用目錄xxx下。
2.創建模型組件
模型組件文件UserInfo.java 是處理業務邏輯的JavaBean, 封裝了與論壇用戶相關的所有信息,同時也定義了所有與論壇用戶信息處理相關的方法。例如檢查用戶身份的方法以及查找、刪除、編輯、存儲用戶信息等。通過Action類派生的子類LoginAction訪問UserInfo.java實現對業務邏輯的處理。注意業務邏輯層對應的類所在的包應該部署在xxx/WEB-INF/classes下。
3.創建控制器組件
控制器組件作為整個MVC架構的控制中心,包括了ActionServlet、Action Bean、ActionForm Bean、以及相關配置文件web.xml及資源包。
(1)聲明及定義LoginActionForm.java
該Javabean用于獲取用戶登錄頁面提交的表單數據。注意ActionFormBean中屬性名稱一定要對應用戶表示層JSP頁面中的表單元素名稱及超鏈接參數名。
(2)聲明及定義LoginAction.java
LoginAction負責處理客戶端提交請求,其主要功能是依據接收到的不同請求,通過LoginActionForm中得到對應的提交表單數據,調用業務邏輯層中對應的UserInfo.java進行處理。最終將結果傳給用戶表示層JSP頁面,顯示在用戶面前。
(3)配置文件定義
web.xml主要實現了對ActionServlet進行配置如下。
< servlet-class>ActionServlet
三、結束語
從某種意思上講,MVC實現了Web層的應用框架,是一個具有良好擴展性和不斷完善的框架,利用這種應用框架不但能縮短開發時間,還能夠實現框架和代碼的重用,特別是當應用有著較復雜的邏輯,并且返回的視圖也不同時,該種方式是首先。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。