程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 基於MVC設計模式的WEB應用框架研究

基於MVC設計模式的WEB應用框架研究

編輯:關於JAVA

摘要 MVC設計模式是基於J2EE的WEB應用開發的首選模式,當前許多流行的框架也都是基於MVC設計模式的。本文簡要介紹了MVC設計模式和Struts框架,並提出了一種基於MVC模式的新型WEB應用開發框架——WebFramework,並對該框架的各個層次的組成、功能進行了詳細的描述。

關鍵詞 MVC設計模式;J2EE;框架;Struts

引言

隨著開源軟件的興起,各種框架也紛紛出現,如Apache 的開源框架Struts就是典型的代表。在實際軟件開發中運用這些框架,大大降低了J2EE開發的復雜度和難度,降低了開發成本。但是這些框架也有不足的地方,如難於掌握,配置復雜等等。本文研究的目的在於設計出一種簡單易行的WEB開發框架——WebFramework,WebFramework結構清晰,易於理解,增加系統的可擴展性,可維護性,降低開發成本。

MVC設計模式

基於J2EE的WEB應用系統,多數都利用MVC模式來實現其體系結構。MVC(Model-View-Controller)是八十年代為編程語言Smalltalk-80發明的一種軟件設計模式。MVC模式將交互式應用分成模型(Model)、視圖(View)和控制器(Controller)三部分[1]。模型是指從現實世界中挖掘出來的對象模型,是應用邏輯的反映。模型封裝了數據和對數據的操作,是實際進行數據處理的計算的地方。視圖是應用和用戶之間的接口,它負責將應用顯現給用戶和顯示模型的狀態。控制器負責視圖和模型之間的交互,控制對用戶輸入的響應響應方式和流程,它主要負責兩方面的動作:把用戶的請求分發到相應的模型;將模型的改變及時反應到視圖上。MVC將這些對象分離以提高靈活性和復用性。MVC模式的結構如圖1所示:

圖1 MVC設計模式的結構

Struts框架

Struts是Apache基金會Jakarta項目組的一個Open Source項目,它將Servlet2.2和JSP1.1標記用作實現的一部分,它由一組相互協作的類、servlet和JSP標記,組成一個可重用的系統設計。它能夠很好地幫助Java開發者利用J2EE開發WEB應用。它將設計模式中“分離顯示邏輯與業務邏輯”的能力發揮的淋漓盡致。因此,越來越多的大型的WEB應用項目的開發都紛紛采用Struts框架,或者借鑒Struts架構設計,進行基於MVC模式的應用系統的開發。

Struts的工作原理如圖2所示:

圖2 Struts 的工作原理

Struts的優點主要體現在兩個方面:表單驗證和頁面導航。表單驗證解決了請求數據的驗證問題,增強了系統健壯性。而頁面導航使系統的業務流程脈絡清晰,系統各部分之間的聯系可以通過配置文件反映出來,從而在一定程度上簡化了系統以後的維護工作。

但是Struts也存在一些不足:

1)陡峭的學習曲線。Taglib是Struts的標記庫,如果能靈活運用,能大提高開發效率,但對初學者來說,卻需要一個持續學習的過程,增加了系統的開發成本。

2)增加了系統的復雜度。業務層和表現層之間的耦合度太高,使得開發人員無法專注於表現層的設計和實現。

3)沒有對表單數據前端驗證提出方案,不利於在大型系統中使用。

4)配置文件過於復雜繁索,隨著系統規模的增大,struts-config.xml越來越龐大,維護也變得越來越困難。

WebFramework框架

針對Struts框架的以上不足之處,本文提出WebFramework框架,與Struts框架相比,WebFramework更簡單易行,它通過簡化表現層的設計,降低開發難度,節約開發成本;使用VO(Value Object)作為數據傳遞的方式,降低系統復雜度;運用簡單的浏覽器端表單字段數據驗證,提高系統的運行效率;簡化的配置文件,便於系統的維護。

設計目標

遵循J2EE規范,基於多層分布式應用軟件開發框架,分布式的層次構架方式可以提高軟件系統性能上的可擴展性,從長期的角度上保障了客戶對當前的軟件投資;實現軟件系統在異常情況下也可以正常地提供服務,提高軟件系統的穩定性;各個構架層次邏輯分離,有利於軟件開發過程中團隊成員的協同工作,提高生產效率。

2、框架結構

在設計策略中,將軟件系統從構架上分為數據層、業務邏輯層和表示層,主要集中在業務表示與業務邏輯層。將普通三層架構的表示層細分成視圖格式層和表示控制邏輯層。表示層涉及基於“瘦客戶”技術的用戶視圖格式服務器端表示和相應的交互式控制邏輯。視圖格式層,只保留了構建客戶端用戶視圖必要的顯示格式和事件觸發;而在表示控制邏輯層則如名稱所描述的那樣,實現了人機交互所需控制邏輯和部分業務會話邏輯,再加上貫穿所有系統邏輯層的業務實體,則構成了以MVC模式為核心的表示層架構,將顯示格式、顯示控制邏輯、模型數據三部分有效地分隔開來,大大加強了系統架構的可擴展性和應用子系統的可插拔性。

業務層細分成業務會話層和業務持久化層。業務層集中在業務流程中處理邏輯的組件化封裝,且與數據層平台和外部系統無關。業務會話層,側重於業務活動,將一項業務的所有活動事務性地封裝起來,也確保業務流程處理的一致性和高效率;而業務持久化層則是為業務會話層提供支持,提供業務數據的持久化操作,在業務與數據庫之間建立分離作用的中間層,構成松耦合的架構。

本分層模型中實現了MVC設計模式。其中,Servlet組件對應於MVC中的控制器(Controller)部分,JSP及Browser對應於視圖(View)部分,而會話外觀、邏輯Bean及值對象則對應於模型(Model)部分。其結構圖3所示:

2.1、數據層

(1)層定義

數據層對數據進行管理,並向業務邏輯層提供標准化的開放訪問接口。

數據層目前主要提供兩種形式的服務方式:數據庫方式和文件方式。數據庫主要提供業務操作數據等具有明顯結構化特性的數據的存儲和訪問服務;文件主要提供包括掃描文檔圖像、傳真、照片、計算機生成的報告、字處理文檔、電子表格、演示文稿、語音和視頻片段等非結構化數據的存儲和訪問服務。

主要功能:數據創建、數據存儲、數據查詢、數據更新、數據刪除、數據安全、事務支持、數據備份/恢復。

(2)與其他層接口

1)數據庫方式的數據層面向業務邏輯層提供數據庫訪問服務接口,業務邏輯層通過JDBC協議訪問數據庫服務。

2)文件方式的數據層面向業務邏輯層提供文件級的訪問服務接口,業務邏輯層通過操作系統本身提供的文件訪問API訪問文件數據。

圖3 MyFramework框架結構圖

2.2 業務邏輯層

(1)層定義

業務邏輯層接受從表示層輸入的用戶請求,將其轉化為業務邏輯過程能夠理解的方式,根據特定的業務邏輯有序地向數據層發送數據請求,並將數據層返回的數據解釋及組合成用戶所需信息,返回給表示層,是整個應用軟件系統中業務邏輯的實現和處理核心。業務邏輯層運行在基於J2EE應用服務器的EJB及WEB容器中。

(2)組件定義

業務邏輯層包含會話外觀(Session Fa?ade)、邏輯Bean(Logic Bean)和和數據存取Bean(Data Access Bean)等三個邏輯組件。

1)會話外觀

提供了面向表示層的統一的業務邏輯調用接口;是數據存取事務的邊界,所有數據存取事務都由會話外觀進行管理,即會話外觀負責數據存取事務的開始和關閉。

業務邏輯完成方式:通過調用邏輯Bean實現業務邏輯。

2)邏輯Bean

提供了業務邏輯具體實現;具有可復用性:可以直接被會話外觀調用,實現會話外觀所需的業務邏輯;可以被其他邏輯Bean調用,此時此邏輯Bean作為一個更復雜的業務邏輯的一個組成部分。

業務邏輯完成方式:可以通過調用其他的邏輯Bean實現相對復雜的業務邏輯;可以直接調用數據存取Bean完成相對簡單的業務邏輯。

3)數據存取Bean

提供了數據層的訪問接口;不負責管理事務,它只是被動的使用調用者傳入的事務環境;與數據庫表的映射方式,通常采取單個數據表對應單個數據存取Bean的映射方式,由單個數據存取Bean包含對應單個數據表的所有相關數據訪問操作。

4)值對象

包含業務邏輯實體的屬性,不包括業務邏輯實體的操作;是表示層和業務邏輯層數據交換的主體單元,和會話外觀一同組成了完整的業務邏輯實體,提供了業務邏輯層面向表示層的統一接口;與數據庫表的映射方式,通常采取單個數據表對應單個值對象的映射方式;可以與不同類型值對象以聚合方式組成新的值對象。

(3)與其他層接口

1)由會話外觀提供面向表示層的業務邏輯調用接口,表示層通過Java本地調用訪問業務邏輯層。

2)數據存取Bean通過JDBC訪問數據庫服務。

3)數據存取Bean通過操作系統提供的系統服務訪問文件數據。

2.3 表示層

(1)層定義

表示層接受用戶提交的輸入請求,通過對業務邏輯層的訪問,獲得並向用戶輸出可視化響應。

(2)組件定義

采用MVC設計模式,由Servlet提供頁面請求和請求響應的總體控制,JSP和浏覽器提供請求結果響應的可視化顯示。

1)Servlet

接收所有用戶由通過浏覽器提交的業務請求,並合成相應的值對象,訪問業務邏輯層完成業務邏輯實體的業務處理;將業務邏輯實體的變化以值對象的方式通知並轉向相應的JSP。

2)JSP

根據Servlet告知的值對象,合成請求響應結果的最終輸出格式化文本(HTML);將合成格式化文本以網絡協議的方式發送給提交業務請求的用戶浏覽器。

3)浏覽器

提供用戶輸入業務請求數據的輸入界面,數據驗證通過後提交業務請求;接收業務請求響應的HTML文本,將業務請求響應結果以可視化的訪問呈現給用戶。

4)WebService

是業務邏輯層對外部系統提供服務的邊界和接口,完成和外部系統的集成和交互。

(3)與其他層接口

1)Servlet通過Java本地調用訪問業務邏輯層。

2)浏覽器通過HTTP/HTTPS協議向表示層提出業務請求並接收表示層的業務響應。

3、框架的配置文件

(1)系統初始化配置文件:web.xml

該文件是Controller專屬的配置信息文件。控制器在第一次啟動時需要從這個文件載入系統的配置信息。文件內容如下:

<servlet>
<servlet-name>controlservlet</servlet-name>
<servlet-class>mytools.control.web.ControlHan-dler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controlservlet</servlet-name>
<url-pattern>/controler</url-pattern>
</servlet-mapping>

(2)頁面導航配置文件:web_config.xml

<?xml version="1.0" encoding="GB2312"?>
<web-config>
<forwards>
<forward name="XX" path="filename.jsp"/>
…………
</forwards>
<action-mappings>
<action name="XX" type="ActionClassName" method="methodName"/>
…………
</action-mappings>
</web-config>

web_config.xml文件是整個框架的重要部分,它控制了系統執行時的執行流程。該文件包括兩種元素:<forwards>和<action-mappings>,其中<forwards>元素用來設置當前要轉向調用的JSP頁面,而<action-mappings>則設置了當前用戶提交的操作要調用哪一個Action 類,及當前類中的哪個方法。

總結

WebFramework框架已經在一個航運管理項目中經過測試和檢驗,實踐證明,此框架在中大型項目開發中,可以縮短開發周期,提高開發效率,系統運行穩定,易於維護。

有關應用開發框架的研究是一個不斷深入,逐步完善的過程,在對WebFramework不斷推廣試用的基礎上,還將進一步擴展其功能,使其應用領域更加廣泛。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved