首頁(yè)技術(shù)文章正文

JavaEE知識(shí)點(diǎn):MVC設(shè)計(jì)模式

更新時(shí)間:2017-12-26 來(lái)源:黑馬程序員 瀏覽量:

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。

MVC模式最早被Trygve Reenskaug提出,成為施樂(lè)帕羅奧多研究中心(Xerox PARC)的Smalltalk語(yǔ)言發(fā)明的一種軟件設(shè)計(jì)模式。

MVC可對(duì)程序的后期維護(hù)和擴(kuò)展提供了方便,并且使程序某些部分的重用提供了方便。而且MVC也使程序簡(jiǎn)化,更加直觀。

需要注意的是MVC設(shè)計(jì)模式并不是java語(yǔ)言獨(dú)有的設(shè)計(jì)模式,幾乎所有的B/S結(jié)構(gòu)的項(xiàng)目都在使用這種設(shè)計(jì)模式。其中M、V、C分別代表如下含義:

l M:model層,即模型層,用來(lái)維護(hù)數(shù)據(jù)以及提供數(shù)據(jù)訪問(wèn)方法;

l V:view層,即視圖層,通常由jsp充當(dāng),用于展示模型的部分?jǐn)?shù)據(jù)或所有數(shù)據(jù)的可視化視圖;

l C:controller層,即控制層,用于對(duì)處理請(qǐng)求。

下面通過(guò)一張圖來(lái)了解MVC設(shè)計(jì)模式,如圖1-1所示:

MVC設(shè)計(jì)模式

圖 1-1 MVC設(shè)計(jì)模式圖

Javaweb的開(kāi)發(fā)經(jīng)歷了JSP Model1、JSP Model1二代以及JSP Model2三個(gè)時(shí)期。下面我們分別介紹這三個(gè)時(shí)期。

1.JSP Model1第一代

JSP Model1是javaweb早期的設(shè)計(jì)模式,它適合小型web項(xiàng)目,開(kāi)發(fā)成本低。Model1第一代時(shí)期,服務(wù)器端只有jsp頁(yè)面,所有的操作都在jsp頁(yè)面中,其中訪問(wèn)數(shù)據(jù)庫(kù)的API是在jsp頁(yè)面中完成的。也就是說(shuō),所有的東西都耦合在一起,這樣對(duì)后期的維護(hù)和擴(kuò)展極為不利。下面我們通過(guò)一張圖來(lái)了解JSP Model1設(shè)計(jì)模式,如圖1-2所示:

MVC設(shè)計(jì)模式

圖1-2 JSP Model1設(shè)計(jì)模式

2.JSP Model1第二代

JSP Model1第二代有所改進(jìn),把業(yè)務(wù)邏輯的內(nèi)容放到了JavaBean中,而JSP頁(yè)面負(fù)責(zé)顯示以及請(qǐng)求調(diào)度的工作。雖然第二代比第一代好了些,但還讓JSP做了過(guò)多的工作,在JSP中將視圖工作和請(qǐng)求調(diào)度(控制器)的工作耦合在一起了。下面我們通過(guò)一張圖來(lái)了解JSP Model1第二代設(shè)計(jì)模式,如圖1-3所示:

MVC設(shè)計(jì)模式

圖1-3 JSP Model1第二代設(shè)計(jì)模式

3.JSP Model2

JSP Model2模式已經(jīng)可以清晰的看到MVC完整的結(jié)構(gòu)了,在JSP Model2中層次劃分的很清晰,如下所示:

l JSP:視圖層,用來(lái)與用戶打交道,負(fù)責(zé)接收用來(lái)的數(shù)據(jù),以及顯示數(shù)據(jù)給用戶;

l Servlet:控制層,負(fù)責(zé)找到合適的模型對(duì)象來(lái)處理業(yè)務(wù)邏輯,轉(zhuǎn)發(fā)到合適的視圖;

l JavaBean:模型層,完成具體的業(yè)務(wù)工作,例如:開(kāi)啟、轉(zhuǎn)賬等。

JSP Model2適合多人合作開(kāi)發(fā)大型的Web項(xiàng)目,各司其職,互不干涉,有利于開(kāi)發(fā)中的分工,有利于組件的重用。但是,Web項(xiàng)目的開(kāi)發(fā)難度也隨之加大,同時(shí)對(duì)開(kāi)發(fā)人員的技術(shù)要求也有所提高。

下面通過(guò)一張圖來(lái)了解JSP Model2設(shè)計(jì)模式,如圖1-4所示:

MVC設(shè)計(jì)模式

圖1-4 JSP Model2設(shè)計(jì)模式


本文版權(quán)歸黑馬程序員JavaEE學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

作者:黑馬程序員JavaEE培訓(xùn)學(xué)院

首發(fā):http://java.itheima.com/

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!