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

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

更新時間:2017-12-26 來源:黑馬程序員 瀏覽量:

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

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

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

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

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

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

l C:controller層,即控制層,用于對處理請求。

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

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

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

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

1.JSP Model1第一代

JSP Model1是javaweb早期的設(shè)計(jì)模式,它適合小型web項(xiàng)目,開發(fā)成本低。Model1第一代時期,服務(wù)器端只有jsp頁面,所有的操作都在jsp頁面中,其中訪問數(shù)據(jù)庫的API是在jsp頁面中完成的。也就是說,所有的東西都耦合在一起,這樣對后期的維護(hù)和擴(kuò)展極為不利。下面我們通過一張圖來了解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頁面負(fù)責(zé)顯示以及請求調(diào)度的工作。雖然第二代比第一代好了些,但還讓JSP做了過多的工作,在JSP中將視圖工作和請求調(diào)度(控制器)的工作耦合在一起了。下面我們通過一張圖來了解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:視圖層,用來與用戶打交道,負(fù)責(zé)接收用來的數(shù)據(jù),以及顯示數(shù)據(jù)給用戶;

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

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

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

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

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

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


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

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

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

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