国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

基于MVC設(shè)計模式的WEB應用框架研究

2024-07-21 02:14:32
字體:
供稿:網(wǎng)友
  摘要 mvc設(shè)計模式是基于j2ee的web應用開發(fā)的首選模式,當前許多流行的框架也都是基于mvc設(shè)計模式的。本文簡要介紹了mvc設(shè)計模式和struts框架,并提出了一種基于mvc模式的新型web應用開發(fā)框架——webframework,并對該框架的各個層次的組成、功能進行了詳細的描述。

  關(guān)鍵詞 mvc設(shè)計模式; j2ee;框架; struts

  引言

  隨著開源軟件的興起,各種框架也紛紛出現(xiàn),如apache 的開源框架struts就是典型的代表。在實際軟件開發(fā)中運用這些框架,大大降低了j2ee開發(fā)的復雜度和難度,降低了開發(fā)成本。但是這些框架也有不足的地方,如難于掌握,配置復雜等等。本文研究的目的在于設(shè)計出一種簡單易行的框架——webframework,webframework結(jié)構(gòu)清晰,易于理解,增加系統(tǒng)的可擴展性,可維護性,降低開發(fā)成本。

  mvc設(shè)計模式

  基于j2ee的web應用系統(tǒng),多數(shù)都利用mvc模式來實現(xiàn)其體系結(jié)構(gòu)。mvc(model-view-controller)是八十年代為編程語言smalltalk-80發(fā)明的一種軟件設(shè)計模式。mvc模式將交互式應用分成模型(model)、視圖(view)和控制器(controller)三部分[1]。模型是指從現(xiàn)實世界中挖掘出來的對象模型,是應用邏輯的反映。模型封裝了數(shù)據(jù)和對數(shù)據(jù)的操作,是實際進行數(shù)據(jù)處理的計算的地方。視圖是應用和用戶之間的接口,它負責將應用顯現(xiàn)給用戶和顯示模型的狀態(tài)。控制器負責視圖和模型之間的交互,控制對用戶輸入的響應響應方式和流程,它主要負責兩方面的動作:把用戶的請求分發(fā)到相應的模型;將模型的改變及時反應到視圖上。mvc將這些對象分離以提高靈活性和復用性。mvc模式的結(jié)構(gòu)如圖1所示:


圖1 mvc設(shè)計模式的結(jié)構(gòu)


  struts框架

  struts是apache基金會jakarta項目組的一個open source項目,它將servlet2.2和jsp1.1標記用作實現(xiàn)的一部分,它由一組相互協(xié)作的類、servlet和jsp標記,組成一個可重用的系統(tǒng)設(shè)計。它能夠很好地幫助java開發(fā)者利用j2ee開發(fā)web應用。它將設(shè)計模式中“分離顯示邏輯與業(yè)務(wù)邏輯”的能力發(fā)揮的淋漓盡致。因此,越來越多的大型的web應用項目的開發(fā)都紛紛采用struts框架,或者借鑒struts架構(gòu)設(shè)計,進行基于mvc模式的應用系統(tǒng)的開發(fā)。

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


圖2 struts 的工作原理


  struts的優(yōu)點主要體現(xiàn)在兩個方面:表單驗證和頁面導航。表單驗證解決了請求數(shù)據(jù)的驗證問題,增強了系統(tǒng)健壯性。而頁面導航使系統(tǒng)的業(yè)務(wù)流程脈絡(luò)清晰,系統(tǒng)各部分之間的聯(lián)系可以通過配置文件反映出來,從而在一定程度上簡化了系統(tǒng)以后的維護工作。

  但是struts也存在一些不足:

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

  2)增加了系統(tǒng)的復雜度。業(yè)務(wù)層和表現(xiàn)層之間的耦合度太高,使得開發(fā)人員無法專注于表現(xiàn)層的設(shè)計和實現(xiàn)。

  3)沒有對表單數(shù)據(jù)前端驗證提出方案,不利于在大型系統(tǒng)中使用。

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

  webframework框架

  針對struts框架的以上不足之處,本文提出webframework框架,與struts框架相比,webframework更簡單易行,它通過簡化表現(xiàn)層的設(shè)計,降低開發(fā)難度,節(jié)約開發(fā)成本;使用vo(value object)作為數(shù)據(jù)傳遞的方式,降低系統(tǒng)復雜度;運用簡單的瀏覽器端表單字段數(shù)據(jù)驗證,提高系統(tǒng)的運行效率;簡化的配置文件,便于系統(tǒng)的維護。

  設(shè)計目標

  遵循j2ee規(guī)范,基于多層分布式應用軟件開發(fā)框架,分布式的層次構(gòu)架方式可以提高軟件系統(tǒng)性能上的可擴展性,從長期的角度上保障了客戶對當前的軟件投資;實現(xiàn)軟件系統(tǒng)在異常情況下也可以正常地提供服務(wù),提高軟件系統(tǒng)的穩(wěn)定性;各個構(gòu)架層次邏輯分離,有利于軟件開發(fā)過程中團隊成員的協(xié)同工作,提高生產(chǎn)效率。

  2、框架結(jié)構(gòu)

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

  業(yè)務(wù)層細分成業(yè)務(wù)會話層和業(yè)務(wù)持久化層。業(yè)務(wù)層集中在業(yè)務(wù)流程中處理邏輯的組件化封裝,且與數(shù)據(jù)層平臺和外部系統(tǒng)無關(guān)。業(yè)務(wù)會話層,側(cè)重于業(yè)務(wù)活動,將一項業(yè)務(wù)的所有活動事務(wù)性地封裝起來,也確保業(yè)務(wù)流程處理的一致性和高效率;而業(yè)務(wù)持久化層則是為業(yè)務(wù)會話層提供支持,提供業(yè)務(wù)數(shù)據(jù)的持久化操作,在業(yè)務(wù)與數(shù)據(jù)庫之間建立分離作用的中間層,構(gòu)成松耦合的架構(gòu)。

  本分層模型中實現(xiàn)了mvc設(shè)計模式。其中,servlet組件對應于mvc中的控制器(controller)部分,jsp及browser對應于視圖(view)部分,而會話外觀、邏輯bean及值對象則對應于模型(model)部分。其結(jié)構(gòu)圖3所示:

  2.1、數(shù)據(jù)層

  (1)層定義

  數(shù)據(jù)層對數(shù)據(jù)進行管理,并向業(yè)務(wù)邏輯層提供標準化的開放訪問接口。

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

  主要功能:數(shù)據(jù)創(chuàng)建、數(shù)據(jù)存儲、數(shù)據(jù)查詢、數(shù)據(jù)更新、數(shù)據(jù)刪除、數(shù)據(jù)安全、事務(wù)支持、數(shù)據(jù)備份/恢復。

  (2)與其他層接口

  1)數(shù)據(jù)庫方式的數(shù)據(jù)層面向業(yè)務(wù)邏輯層提供數(shù)據(jù)庫訪問服務(wù)接口,業(yè)務(wù)邏輯層通過jdbc協(xié)議訪問數(shù)據(jù)庫服務(wù)。

  2)文件方式的數(shù)據(jù)層面向業(yè)務(wù)邏輯層提供文件級的訪問服務(wù)接口,業(yè)務(wù)邏輯層通過操作系統(tǒng)本身提供的文件訪問api訪問文件數(shù)據(jù)。


圖3 myframework框架結(jié)構(gòu)圖


  2.2 業(yè)務(wù)邏輯層

  (1)層定義

  業(yè)務(wù)邏輯層接受從表示層輸入的用戶請求,將其轉(zhuǎn)化為業(yè)務(wù)邏輯過程能夠理解的方式,根據(jù)特定的業(yè)務(wù)邏輯有序地向數(shù)據(jù)層發(fā)送數(shù)據(jù)請求,并將數(shù)據(jù)層返回的數(shù)據(jù)解釋及組合成用戶所需信息,返回給表示層,是整個應用軟件系統(tǒng)中業(yè)務(wù)邏輯的實現(xiàn)和處理核心。業(yè)務(wù)邏輯層運行在基于j2ee應用服務(wù)器的ejb及web容器中。

  (2)組件定義

  業(yè)務(wù)邏輯層包含會話外觀(session fa?ade)、邏輯bean(logic bean)和和數(shù)據(jù)存取bean(data access bean)等三個邏輯組件。

  1)會話外觀

  提供了面向表示層的統(tǒng)一的業(yè)務(wù)邏輯調(diào)用接口;是數(shù)據(jù)存取事務(wù)的邊界,所有數(shù)據(jù)存取事務(wù)都由會話外觀進行管理,即會話外觀負責數(shù)據(jù)存取事務(wù)的開始和關(guān)閉。

  業(yè)務(wù)邏輯完成方式:通過調(diào)用邏輯bean實現(xiàn)業(yè)務(wù)邏輯。

  2)邏輯bean

  提供了業(yè)務(wù)邏輯具體實現(xiàn);具有可復用性:可以直接被會話外觀調(diào)用,實現(xiàn)會話外觀所需的業(yè)務(wù)邏輯;可以被其他邏輯bean調(diào)用,此時此邏輯bean作為一個更復雜的業(yè)務(wù)邏輯的一個組成部分。

  業(yè)務(wù)邏輯完成方式:可以通過調(diào)用其他的邏輯bean實現(xiàn)相對復雜的業(yè)務(wù)邏輯;可以直接調(diào)用數(shù)據(jù)存取bean完成相對簡單的業(yè)務(wù)邏輯。

  3)數(shù)據(jù)存取bean

  提供了數(shù)據(jù)層的訪問接口;不負責管理事務(wù),它只是被動的使用調(diào)用者傳入的事務(wù)環(huán)境;與數(shù)據(jù)庫表的映射方式,通常采取單個數(shù)據(jù)表對應單個數(shù)據(jù)存取bean的映射方式,由單個數(shù)據(jù)存取bean包含對應單個數(shù)據(jù)表的所有相關(guān)數(shù)據(jù)訪問操作。

  4)值對象

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

  (3)與其他層接口

  1)由會話外觀提供面向表示層的業(yè)務(wù)邏輯調(diào)用接口,表示層通過java本地調(diào)用訪問業(yè)務(wù)邏輯層。

  2)數(shù)據(jù)存取bean通過jdbc訪問數(shù)據(jù)庫服務(wù)。

  3)數(shù)據(jù)存取bean通過操作系統(tǒng)提供的系統(tǒng)服務(wù)訪問文件數(shù)據(jù)。

  2.3 表示層

  (1)層定義

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

  (2)組件定義

  采用mvc設(shè)計模式,由servlet提供頁面請求和請求響應的總體控制,jsp和瀏覽器提供請求結(jié)果響應的可視化顯示。

  1)servlet

  接收所有用戶由通過瀏覽器提交的業(yè)務(wù)請求,并合成相應的值對象,訪問業(yè)務(wù)邏輯層完成業(yè)務(wù)邏輯實體的業(yè)務(wù)處理;將業(yè)務(wù)邏輯實體的變化以值對象的方式通知并轉(zhuǎn)向相應的jsp。

  2)jsp

  根據(jù)servlet告知的值對象,合成請求響應結(jié)果的最終輸出格式化文本(html);將合成格式化文本以網(wǎng)絡(luò)協(xié)議的方式發(fā)送給提交業(yè)務(wù)請求的用戶瀏覽器。

  3)瀏覽器

  提供用戶輸入業(yè)務(wù)請求數(shù)據(jù)的輸入界面,數(shù)據(jù)驗證通過后提交業(yè)務(wù)請求;接收業(yè)務(wù)請求響應的html文本,將業(yè)務(wù)請求響應結(jié)果以可視化的訪問呈現(xiàn)給用戶。

  4)webservice

  是業(yè)務(wù)邏輯層對外部系統(tǒng)提供服務(wù)的邊界和接口,完成和外部系統(tǒng)的集成和交互。

  (3)與其他層接口

  1)servlet通過java本地調(diào)用訪問業(yè)務(wù)邏輯層。

  2)瀏覽器通過http/https協(xié)議向表示層提出業(yè)務(wù)請求并接收表示層的業(yè)務(wù)響應。

  3、框架的配置文件

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

  該文件是controller專屬的配置信息文件。控制器在第一次啟動時需要從這個文件載入系統(tǒng)的配置信息。文件內(nèi)容如下:

<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文件是整個框架的重要部分,它控制了系統(tǒng)執(zhí)行時的執(zhí)行流程。該文件包括兩種元素:<forwards>和<action-mappings>,其中<forwards>元素用來設(shè)置當前要轉(zhuǎn)向調(diào)用的jsp頁面,而<action-mappings>則設(shè)置了當前用戶提交的操作要調(diào)用哪一個action 類,及當前類中的哪個方法。

  總結(jié)

  webframework框架已經(jīng)在一個航運管理項目中經(jīng)過測試和檢驗,實踐證明,此框架在中大型項目開發(fā)中,可以縮短開發(fā)周期,提高開發(fā)效率,系統(tǒng)運行穩(wěn)定,易于維護。

  有關(guān)應用開發(fā)框架的研究是一個不斷深入,逐步完善的過程,在對webframework不斷推廣試用的基礎(chǔ)上,還將進一步擴展其功能,使其應用領(lǐng)域更加廣泛。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泸西县| 墨江| 安龙县| 桃园市| 密云县| 本溪| 元谋县| 凤城市| 加查县| 保定市| 来凤县| 榆林市| 嵊泗县| 洛宁县| 聊城市| 莱州市| 锡林郭勒盟| 广东省| 启东市| 南涧| 瑞安市| 绩溪县| 青铜峡市| 河源市| 新竹市| 同仁县| 靖安县| 新晃| 清镇市| 观塘区| 宝应县| 安达市| 瓦房店市| 梅河口市| 永年县| 绵阳市| 蛟河市| 多伦县| 天长市| 页游| 乌拉特中旗|