郭平
摘 要:MVC設(shè)計(jì)模式是一種可靠有效的開(kāi)發(fā)模式,它實(shí)現(xiàn)了業(yè)務(wù)邏輯和顯示界面的分離,在Web應(yīng)用開(kāi)發(fā)中廣泛地使用,該文簡(jiǎn)要介紹了MVC設(shè)計(jì)模式,討論了MVC模式在Java Web應(yīng)用中的實(shí)現(xiàn),最后給出了一個(gè)基于MVC模式的Java Web登錄程序的實(shí)例。
關(guān)鍵詞: MVC 設(shè)計(jì)模式 Web應(yīng)用 Java
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2017)07(c)-0008-03
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,基于B/S模式的Web應(yīng)用系統(tǒng)已成趨勢(shì),用戶界面完全通過(guò)瀏覽器實(shí)現(xiàn),主要的事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn)。Java Web應(yīng)用程序是采用Java技術(shù)開(kāi)發(fā)的Web應(yīng)用程序,在Java Web的開(kāi)發(fā)應(yīng)用中使用MVC模式能夠使得系統(tǒng)更容易擴(kuò)展、部署和維護(hù),提高開(kāi)發(fā)效率。
1 MVC模式
MVC(Model-View-Controller)是20世紀(jì)80年代發(fā)明的一種軟件設(shè)計(jì)模式。MVC模式將交互式應(yīng)用分成模型(Model)、視圖(View)和控制器(Controller)3個(gè)部分。
Model是從現(xiàn)實(shí)世界中抽象出來(lái)的對(duì)象模型,模型封裝了數(shù)據(jù)和對(duì)數(shù)據(jù)的操作,并進(jìn)行數(shù)據(jù)處理計(jì)算。View是應(yīng)用和用戶之間的接口,負(fù)責(zé)將應(yīng)用呈現(xiàn)給用戶。Controller負(fù)責(zé)視圖和模型之間的交互,控制對(duì)用戶輸入的響應(yīng)、響應(yīng)方式和流程,它主要負(fù)責(zé):(1)把用戶的請(qǐng)求分發(fā)到相應(yīng)的模型。(2)將模型的改變及時(shí)反映到視圖上。將MVC設(shè)計(jì)模式運(yùn)用在Web項(xiàng)目開(kāi)發(fā)上,可以很大程度地節(jié)約開(kāi)發(fā)時(shí)間,將軟件開(kāi)發(fā)人員的精力集中在業(yè)務(wù)邏輯上,不僅減少了項(xiàng)目開(kāi)發(fā)的成本,還大大提高了開(kāi)發(fā)效率,增強(qiáng)了Web應(yīng)用系統(tǒng)的維護(hù)性和延展性。
2 MVC模式在Java Web應(yīng)用中的實(shí)現(xiàn)
經(jīng)典MVC模式在桌面程序中發(fā)揮了很重要的作用,隨著軟件規(guī)模的不斷擴(kuò)大,MVC設(shè)計(jì)模式正在應(yīng)用到各種應(yīng)用程序的設(shè)計(jì)中。Sun公司提出了兩種web應(yīng)用程序的開(kāi)發(fā)方式,分別稱為模式1和模式2。
模式1以JSP為中心,JSP頁(yè)面響應(yīng)用戶請(qǐng)求并將處理結(jié)果返回客戶,數(shù)據(jù)讀取由JavaBean完成。這種模式中JSP頁(yè)面同時(shí)實(shí)現(xiàn)業(yè)務(wù)邏輯、數(shù)據(jù)顯示和流程控制,適合開(kāi)發(fā)小規(guī)模的Web應(yīng)用程序,但不能滿足復(fù)雜的大型應(yīng)用程序的開(kāi)發(fā)需求。
模式2基于MVC設(shè)計(jì)模式,由不同的組件分別實(shí)現(xiàn)應(yīng)用邏輯、處理過(guò)程和顯示邏輯,這些組件可以進(jìn)行交互和重用,以Servlet為核心,具體實(shí)現(xiàn)如下。
Model:JavaBean對(duì)象,用于封裝商業(yè)規(guī)則和存儲(chǔ)數(shù)據(jù)。
View:JSP頁(yè)面,接收Servlet傳遞的內(nèi)容,調(diào)用JavaBean并顯示其中的數(shù)據(jù)給用戶。
Controller:Servlet對(duì)象,負(fù)責(zé)所有的用戶請(qǐng)求參數(shù),判斷請(qǐng)求參數(shù)是否合法,根據(jù)請(qǐng)求的類型調(diào)用JavaBean執(zhí)行操作并將處理結(jié)果交由View顯示。
模式2充分發(fā)揮了JSP和Servlet的技術(shù)特點(diǎn),JSP頁(yè)面擅長(zhǎng)數(shù)據(jù)顯示,適合做顯示層,避免在JSP中大量使用Java代碼來(lái)處理數(shù)據(jù);Servlet擅長(zhǎng)數(shù)據(jù)處理,應(yīng)避免在其中有大量的HTML標(biāo)記輸出。模式2分離了顯示層和業(yè)務(wù)層,有利于軟件的擴(kuò)展和維護(hù)。從軟件工程化的角度來(lái)講,有利于開(kāi)發(fā)團(tuán)隊(duì)各司其職,有利于軟件開(kāi)發(fā)的工程化管理。
模式1適合小型的程序開(kāi)發(fā),開(kāi)發(fā)速度快,如果程序復(fù)雜,考慮到代碼的維護(hù)工作,一般采用模式2。
3 Web實(shí)例
以一個(gè)Web用戶登錄程序?yàn)槔f(shuō)明MVC設(shè)計(jì)模式在實(shí)際開(kāi)發(fā)中的主要作用。用戶登錄功能是Web應(yīng)用系統(tǒng)需要實(shí)現(xiàn)的基本功能之一,設(shè)計(jì)一個(gè)簡(jiǎn)單的用戶登錄Web應(yīng)用,該程序中,用戶輸入的登錄信息提交給Servlet,Servlet接收后,首先檢驗(yàn)輸入內(nèi)容的合法性,若驗(yàn)證失敗則將錯(cuò)誤信息傳遞給登錄頁(yè)顯示;若數(shù)據(jù)合法則調(diào)用DAO層完成數(shù)據(jù)庫(kù)的驗(yàn)證,根據(jù)驗(yàn)證的結(jié)果跳轉(zhuǎn)到登錄成功或登錄失敗的頁(yè)面。
(1)MVC登錄程序流程,如圖1所示。
(2)MVC登錄程序清單。
使用Mysql數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名稱為mvcsql,表名稱為:user,其中含有三個(gè)屬性,分別為:(userid,name,password)(見(jiàn)表1)。
(3)部分代碼。
4 結(jié)語(yǔ)
該文以MVC模式結(jié)合Web實(shí)例,完整地分析了開(kāi)發(fā)Web應(yīng)用程序的解決方案,MVC模式是解決開(kāi)發(fā)Web應(yīng)用程序的一種非常有效的模式,它為Web應(yīng)用開(kāi)發(fā)提供了統(tǒng)一的、標(biāo)準(zhǔn)的開(kāi)發(fā)模式,將web系統(tǒng)中的數(shù)據(jù)對(duì)象、業(yè)務(wù)邏輯、用戶界面三者分離,使得系統(tǒng)具有很好的擴(kuò)展性,縮短了開(kāi)發(fā)周期,便于后期的維護(hù),在今天仍將得到廣泛的應(yīng)用。
參考文獻(xiàn)
[1] 任小敏,鐘寶榮.MVC模式在Java程序中的應(yīng)用及實(shí)現(xiàn),信息系統(tǒng)工程,2011(11):50.
[2] 馮玉萍.基于MVC的設(shè)計(jì)與開(kāi)發(fā)[J].科技風(fēng),2010(5):25.