張睿涵 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
基于經(jīng)典MVC架構(gòu)的實(shí)現(xiàn)Web應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
張睿涵 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
MVC設(shè)計(jì)架構(gòu)是一種經(jīng)典的軟件設(shè)計(jì)模式,并廣泛應(yīng)用于Web應(yīng)用系統(tǒng)開發(fā)過程,本文分析討論面向?qū)ο蟮腗VC設(shè)計(jì)模式,分析該設(shè)計(jì)模式基本原理和構(gòu)成機(jī)制,并將MVC設(shè)計(jì)架構(gòu)融入到本文的系統(tǒng)開發(fā)過程中。通過對(duì)MVC設(shè)計(jì)模式的研究,本文講述MVC設(shè)計(jì)架構(gòu)的應(yīng)用系統(tǒng)開發(fā)原理及優(yōu)缺點(diǎn),基于MVC設(shè)計(jì)架構(gòu)的開發(fā)軟件應(yīng)用系統(tǒng)的流程,并基于MVC設(shè)計(jì)架構(gòu)實(shí)現(xiàn)光盤發(fā)布應(yīng)用系統(tǒng)模型,將MVC設(shè)計(jì)架構(gòu)應(yīng)用于JSP開發(fā)技術(shù)中。經(jīng)過本文研究的系統(tǒng)可以充分使用MVC設(shè)計(jì)架構(gòu)。
MVC設(shè)計(jì)架構(gòu) Web應(yīng)用系統(tǒng) J2EE平臺(tái) 光盤發(fā)布 JSP技術(shù)
隨著Web應(yīng)用系統(tǒng)的使用不斷增多的現(xiàn)象,對(duì)于Web應(yīng)用系統(tǒng)的開發(fā)與設(shè)計(jì)使用MVC設(shè)計(jì)架構(gòu),開發(fā)Web應(yīng)用系統(tǒng)無論選擇什么編程語言,無論應(yīng)用系統(tǒng)業(yè)務(wù)功能流程多復(fù)雜,都可成為應(yīng)用系統(tǒng)所提供通用設(shè)計(jì)模式框架,為了構(gòu)造通用應(yīng)用系統(tǒng)提供基本的設(shè)計(jì)框架。本文通過對(duì)光盤發(fā)布應(yīng)用系統(tǒng)的實(shí)踐,深入研究基于MVC設(shè)計(jì)架構(gòu)的Web應(yīng)用系統(tǒng)。
本文涉及到的MVC設(shè)計(jì)模式(模型M一視圖V一控制器C),這種設(shè)計(jì)模式堪稱軟件設(shè)計(jì)的經(jīng)典模式。每個(gè)系統(tǒng)的用戶界面,負(fù)責(zé)顯示系統(tǒng)數(shù)據(jù)和與用戶交互操作的功能。用戶希望與應(yīng)用系統(tǒng)之間保持交互操作順暢,用戶希望系統(tǒng)能呈現(xiàn)動(dòng)態(tài)改變內(nèi)容或者其他展現(xiàn)形式,這就要求系統(tǒng)需要滿足用戶界面需求的同時(shí),系統(tǒng)邏輯模型獨(dú)立于用戶界面的組成,MVC開發(fā)模型使得類對(duì)象的強(qiáng)制分離,因此,實(shí)現(xiàn)Web應(yīng)用系統(tǒng)基于MVC設(shè)計(jì)模式作為一種層次結(jié)構(gòu)分離的模型是最佳的選擇,Web應(yīng)用系統(tǒng)的設(shè)計(jì)、開發(fā)和維護(hù)變得非常靈活,極大地提高了模塊之間的重用性。
2.1 MVC的基本設(shè)計(jì)思想
Model、View和Controller的簡稱,即是MVC。需要將一個(gè)應(yīng)用系統(tǒng)的輸入、數(shù)據(jù)加工處理和輸出過程均是按照這個(gè)流程方式實(shí)現(xiàn)業(yè)務(wù)功能的分離,應(yīng)用系統(tǒng)形成以模型、視圖和控制三層的軟件架構(gòu)。
模型層(Model):負(fù)責(zé)處理業(yè)務(wù)/狀態(tài)的處理過程以及業(yè)務(wù)規(guī)則定義。業(yè)務(wù)狀態(tài)處理流程對(duì)于其他層而言模糊操作,模型層接受來自視圖層用戶請(qǐng)求的數(shù)據(jù)處理過程,并為用戶返回有關(guān)的處理結(jié)果。
視圖層(Viewer):負(fù)責(zé)用戶數(shù)據(jù)交互操作界面,因此,對(duì)于Web應(yīng)用系統(tǒng)而言,基本上為HTML實(shí)現(xiàn)的網(wǎng)頁,但是,也可以將XHTML、XML和Applet等技術(shù)應(yīng)用到HTML網(wǎng)頁前端。通常情況下,應(yīng)用系統(tǒng)可能存在多種不同的視圖層,通過MVC設(shè)計(jì)模式實(shí)現(xiàn)的系統(tǒng),視圖的作用負(fù)責(zé)對(duì)頁面控件數(shù)據(jù)的采集和系統(tǒng)處理數(shù)據(jù)的顯示,即負(fù)責(zé)接收來自用戶請(qǐng)求以及顯示處理結(jié)果的功能,而不負(fù)責(zé)在視圖層的業(yè)務(wù)功能處理過程。應(yīng)用系統(tǒng)的業(yè)務(wù)流程處理過程交給模型層處理。
控制層(Controller)完成的是從用戶獲取請(qǐng)求操作,負(fù)責(zé)模型與視圖建立聯(lián)系,共同完成用戶請(qǐng)求操作。它屬于控制調(diào)度層,它負(fù)責(zé)清楚地告訴程序員,它完全是控制轉(zhuǎn)發(fā)器,選擇哪種模型,就負(fù)責(zé)處理哪種視圖,也就完成哪種用戶請(qǐng)求。在MVC設(shè)計(jì)模式中,控制層并不需要做任何的業(yè)務(wù)數(shù)據(jù)處理。當(dāng)用戶點(diǎn)擊某個(gè)功能連接時(shí),控制層接受來自用戶的請(qǐng)求之后,并不需要處理業(yè)務(wù)數(shù)據(jù),它只負(fù)責(zé)找到相匹配的模型的函數(shù),并將參數(shù)傳遞該模型車的函數(shù),并告訴應(yīng)該做什么,當(dāng)模型層處理完畢業(yè)務(wù)數(shù)據(jù)控制層接收來自于模型層的處理結(jié)果,并把符合要求的處理結(jié)果返回到視圖層為用戶顯示。因此,模型層與視圖層是一對(duì)多的關(guān)系。
在MVC設(shè)計(jì)思想中的核心是業(yè)務(wù)功能模型的設(shè)計(jì)。業(yè)務(wù)模型層設(shè)計(jì)過程中數(shù)據(jù)模型。數(shù)據(jù)模型主要完成數(shù)據(jù)持久化操作,是指實(shí)體對(duì)象與表字段一一映射關(guān)系。例如:將淘寶訂單數(shù)據(jù)保存到系統(tǒng)的數(shù)據(jù)庫中,或者從系統(tǒng)的數(shù)據(jù)庫獲取淘寶訂單數(shù)據(jù)??梢詫⒋四P蛦为?dú)羅列,全部的數(shù)據(jù)庫操作僅僅限于該模型中,為用戶提供相關(guān)服務(wù)。
2.2 基于MVC設(shè)計(jì)模式開發(fā)應(yīng)用系統(tǒng)的優(yōu)點(diǎn)
此前的Web應(yīng)用系統(tǒng)將業(yè)務(wù)數(shù)據(jù)處理與結(jié)果顯示置于同一個(gè)頁面的編程方式,這種方式使得程序編寫與調(diào)試變得麻煩,而基于MVC設(shè)計(jì)模式實(shí)現(xiàn)的應(yīng)用系統(tǒng)設(shè)計(jì),具備下列的優(yōu)點(diǎn):
(1)模型層與視圖層是一對(duì)多的關(guān)系。一個(gè)模型與多個(gè)視圖建立聯(lián)系??梢源_保全部相關(guān)的視圖及時(shí)獲得來自于模型層數(shù)據(jù)的變化,使得全部相關(guān)的視圖與控制層實(shí)現(xiàn)操作同步。
(2)視圖與控制器實(shí)現(xiàn)靈活對(duì)接,允許新修改視圖與控制層之間關(guān)聯(lián)的業(yè)務(wù)數(shù)據(jù),而且重要的是可以實(shí)現(xiàn)需求動(dòng)態(tài)更改相互的關(guān)聯(lián),例如:打開、修改或者關(guān)閉等操作。
(3)模型的可移植性與可重用性。因?yàn)槟P褪仟?dú)立于視圖的,所以可以把一個(gè)模型獨(dú)立地移植到新的平臺(tái)工作。需要做的只是在新平臺(tái)上對(duì)視圖和控制器進(jìn)行新的修改。
(4)使用MVC設(shè)計(jì)思想的應(yīng)用系統(tǒng)具有清晰的軟件結(jié)構(gòu)。大多數(shù)應(yīng)用系統(tǒng)都可以實(shí)現(xiàn)的MVC三層架構(gòu)設(shè)計(jì),正因如此,方便基于此設(shè)計(jì)模式建立一種可以通用框架結(jié)構(gòu),不局限于視圖設(shè)計(jì)過程中,而且還可以用在系統(tǒng)總體布局或者局部功能設(shè)計(jì)。
(5)便于應(yīng)用系統(tǒng)規(guī)劃管理。在MVC架構(gòu)設(shè)計(jì)中,由于不同層職責(zé)不同,每層具體應(yīng)用又存在相似的特征,便于應(yīng)用系統(tǒng)規(guī)劃管理、管理程序代碼,極大提高應(yīng)用系統(tǒng)編程效率。
(6)有利于應(yīng)用系統(tǒng)的功能擴(kuò)展與維護(hù)操作。一個(gè)應(yīng)用系統(tǒng)被設(shè)計(jì)為3層架構(gòu)模式,有時(shí)改變某層需求就能滿足用戶。例如:某個(gè)應(yīng)用系統(tǒng)的業(yè)務(wù)流程設(shè)計(jì)或者業(yè)務(wù)規(guī)則定義的改變只需修改MVC結(jié)構(gòu)中的模型層即可。
根據(jù)MVC的基本設(shè)計(jì),基于MVC實(shí)現(xiàn)的應(yīng)用系統(tǒng)設(shè)計(jì)首先要獲取系統(tǒng)應(yīng)用的需求,設(shè)計(jì)應(yīng)用系統(tǒng)的MVC結(jié)構(gòu),即將其按照系統(tǒng)功能設(shè)計(jì)MVC的三層結(jié)構(gòu),前提需要充分了解系統(tǒng)的全部需求。這里所闡述的應(yīng)用系統(tǒng)實(shí)例是本人日常工作中所負(fù)責(zé)軟件項(xiàng)目部分—隨書光盤發(fā)布應(yīng)用系統(tǒng)的設(shè)計(jì)與開發(fā)。設(shè)計(jì)該系統(tǒng)的目的完成非圖書資源在高校內(nèi)的發(fā)布情況,以方便廣大師生借閱使用。
3.1 應(yīng)用系統(tǒng)的需求分析
通過對(duì)高校很多師生及系統(tǒng)的管理人員的需求展開調(diào)查分析,并總結(jié)出光盤發(fā)布應(yīng)用系統(tǒng)主要功能功能包括:
(1)前臺(tái)業(yè)務(wù)管理功能。為高校很多師生提供業(yè)務(wù)服務(wù)功能,主要有圖書檢索、電子資料下載、某些特殊資源開放申請(qǐng)功能以及師生留言等功能。
(2)后臺(tái)綜合業(yè)務(wù)管理功能。該功能是系統(tǒng)管理員實(shí)現(xiàn)管理、發(fā)布某些資源提供便利的渠道。主要包括:發(fā)布與更新電子資料功能、不定期的電子數(shù)據(jù)批量導(dǎo)入功能、處理審核審批功能以及數(shù)據(jù)備份與恢復(fù)操作。
3.2 數(shù)據(jù)庫設(shè)計(jì)
根據(jù)應(yīng)用系統(tǒng)的功能實(shí)際需求,主要實(shí)體是圖書表以及光盤發(fā)布記錄表等等。根據(jù)數(shù)據(jù)庫設(shè)計(jì)原理獲取表的概念模型,因此,圖書表(book)轉(zhuǎn)換的對(duì)應(yīng)關(guān)系主要包括:bookID(圖書序號(hào))、bookName(圖書名稱)、bookType(圖書分類信息)、bookT(中英文對(duì)照)、bookD(是否具有電子資源)、bookask(圖發(fā)布申請(qǐng)字段)等。
3.3 構(gòu)建基于MVC設(shè)計(jì)模式的系統(tǒng)模型
根據(jù)MVC設(shè)計(jì)模式,使用數(shù)學(xué)參考模型表示MVC設(shè)計(jì)實(shí)現(xiàn)的應(yīng)用系統(tǒng):
A表示應(yīng)用系統(tǒng)的簡稱,M、V、C分別MVC設(shè)計(jì)模式中的三層結(jié)構(gòu),R表示用戶請(qǐng)求列表,正是,根據(jù)該數(shù)學(xué)參考模型,最后將確定的光盤發(fā)布應(yīng)用系統(tǒng)的全部功能進(jìn)行劃分層次。
(1)系統(tǒng)將直接與用戶交互的模塊劃分到視圖層V列表中。
(2)把數(shù)據(jù)庫邏輯處理部分劃分到模型層M列表中,把數(shù)據(jù)庫的建立連接管理、數(shù)據(jù)檢索功能(包含:目錄分類檢索、初步數(shù)據(jù)檢索、高級(jí)數(shù)據(jù)檢索)以及數(shù)據(jù)更新操作管理(發(fā)布與更新電子資料功能、不定期的電子數(shù)據(jù)批量導(dǎo)入功能、處理審核審批功能以及數(shù)據(jù)備份與恢復(fù)操作)劃分到模型層M列表中。
(3)來自于用戶請(qǐng)求處理并調(diào)用對(duì)應(yīng)業(yè)務(wù)邏輯關(guān)系,并將業(yè)務(wù)處理結(jié)果返回視圖層為用戶頁面顯示,負(fù)責(zé)收集處理結(jié)果和控制轉(zhuǎn)發(fā)由控制層實(shí)現(xiàn)。
建立應(yīng)用系統(tǒng)的MVC設(shè)計(jì)模式之后,方可選擇適用的開發(fā)工具實(shí)現(xiàn)系統(tǒng)的開發(fā)工作。本文根據(jù)實(shí)際情況選擇了JSP技術(shù)、Servlet技術(shù)和JavaBeans技術(shù)的結(jié)合。
4.1 實(shí)現(xiàn)應(yīng)用系統(tǒng)的技術(shù)組合
JSP技術(shù)、Servlet技術(shù)和JavaBeans技術(shù)的結(jié)合是MVC設(shè)計(jì)模式的經(jīng)典應(yīng)用,三者的結(jié)合可以更好地實(shí)現(xiàn)MVC設(shè)計(jì)模型的應(yīng)用系統(tǒng)。
(1)應(yīng)用系統(tǒng)的模型層。它是由JavaBean對(duì)象組件完成,并將業(yè)務(wù)數(shù)據(jù)封裝到其中。
(2)應(yīng)用系統(tǒng)的視圖層。它是由JSP技術(shù)負(fù)責(zé)實(shí)現(xiàn)頁面數(shù)據(jù)的顯示功能。
(3)應(yīng)用系統(tǒng)的控制層。它是由Servlets技術(shù)接受來自于用戶輸入請(qǐng)求以及某個(gè)操作的提交,并根據(jù)相應(yīng)的請(qǐng)求操作,調(diào)用相應(yīng)業(yè)務(wù)邏輯處理組件,并收集處理結(jié)果轉(zhuǎn)發(fā)給相應(yīng)的視圖層頁面顯示。
4.2 實(shí)現(xiàn)Web應(yīng)用系統(tǒng)
上述已經(jīng)對(duì)光盤發(fā)布應(yīng)用系統(tǒng)的技術(shù)架構(gòu)分析、功能需求分析以及數(shù)據(jù)庫結(jié)構(gòu)分析,而三種技術(shù)的組合更好的完成了MVC設(shè)計(jì)思想。為此,三種技術(shù)的結(jié)合有效的完成映射操作。將應(yīng)用系統(tǒng)模型層的各種業(yè)務(wù)處理邏輯通過使用JavaBeans對(duì)象組件實(shí)現(xiàn),本文實(shí)現(xiàn)的應(yīng)用系統(tǒng)的數(shù)據(jù)庫采用SQL2005管理技術(shù);視圖層采用JSP技術(shù)每個(gè)功能界面;同時(shí)控制層的編寫通過Servlets控制器實(shí)現(xiàn)接受請(qǐng)求和處理結(jié)果的轉(zhuǎn)發(fā)操作:在應(yīng)用系統(tǒng)的實(shí)現(xiàn)過程中,使用JS作為前端判斷技術(shù),用于表單字段的判斷及數(shù)據(jù)輸入的標(biāo)準(zhǔn)性判斷。
基于MVC設(shè)計(jì)模式開發(fā)實(shí)現(xiàn)的光盤發(fā)布應(yīng)用系統(tǒng),由于其應(yīng)用到MVC設(shè)計(jì)模式存在的優(yōu)勢(shì),應(yīng)用系統(tǒng)中持久層、模型層、業(yè)務(wù)處理層與顯示層有效分離,好處是:一是在開發(fā)過程中,便于多人協(xié)作編碼,又便于系統(tǒng)的設(shè)計(jì)文檔編寫工作,提高多人共同開發(fā)的效率;二是應(yīng)用系統(tǒng)上線運(yùn)行之后的升級(jí)維護(hù)操作必不可少,用戶希望與應(yīng)用系統(tǒng)之間保持交互操作順暢,對(duì)應(yīng)用系統(tǒng)的功能擴(kuò)展與維護(hù)變得簡單可行?;贛VC設(shè)計(jì)的應(yīng)用系統(tǒng)正被更多的人使用,如果時(shí)一種通用設(shè)計(jì)框架,為開發(fā)者帶來更多的開發(fā)便利,提高應(yīng)用系統(tǒng)的代碼可重用性提供了新的契機(jī)。
[1]宋國慶.軟件開發(fā)綜合訓(xùn)練教程基于JavaWeb應(yīng)用[M].北京:高等教育出版社,2008
[2]王映輝,王英杰,王彥君,等.基于MVC的軟件界面體系結(jié)構(gòu)研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2004(9):188-199
[3]孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設(shè)計(jì)與開發(fā)[M].北京:電子工業(yè)出版社,2004
[4]劉春花,王忠民.基于MVC模式的遠(yuǎn)程評(píng)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(13):3648
[5]王曉楠.MVC的設(shè)計(jì)和實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2004(3):56-58