更新時(shí)間:2017-12-26 來源:黑馬程序員 瀏覽量:
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ā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。
MVC模式最早被Trygve Reenskaug提出,成為施樂帕羅奧多研究中心(Xerox PARC)的Smalltalk語言發(fā)明的一種軟件設(shè)計(jì)模式。
MVC可對(duì)程序的后期維護(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層,即控制層,用于對(duì)處理請(qǐng)求。
下面通過一張圖來了解MVC設(shè)計(jì)模式,如圖1-1所示:
圖 1-1 MVC設(shè)計(jì)模式圖
Javaweb的開發(fā)經(jīng)歷了JSP Model1、JSP Model1二代以及JSP Model2三個(gè)時(shí)期。下面我們分別介紹這三個(gè)時(shí)期。
1.JSP Model1第一代
JSP Model1是javaweb早期的設(shè)計(jì)模式,它適合小型web項(xiàng)目,開發(fā)成本低。Model1第一代時(shí)期,服務(wù)器端只有jsp頁面,所有的操作都在jsp頁面中,其中訪問數(shù)據(jù)庫的API是在jsp頁面中完成的。也就是說,所有的東西都耦合在一起,這樣對(duì)后期的維護(hù)和擴(kuò)展極為不利。下面我們通過一張圖來了解JSP Model1設(shè)計(jì)模式,如圖1-2所示:
圖1-2 JSP Model1設(shè)計(jì)模式
2.JSP Model1第二代
JSP Model1第二代有所改進(jìn),把業(yè)務(wù)邏輯的內(nèi)容放到了JavaBean中,而JSP頁面負(fù)責(zé)顯示以及請(qǐng)求調(diào)度的工作。雖然第二代比第一代好了些,但還讓JSP做了過多的工作,在JSP中將視圖工作和請(qǐng)求調(diào)度(控制器)的工作耦合在一起了。下面我們通過一張圖來了解JSP Model1第二代設(shè)計(jì)模式,如圖1-3所示:
圖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é)找到合適的模型對(duì)象來處理業(yè)務(wù)邏輯,轉(zhuǎn)發(fā)到合適的視圖;
l JavaBean:模型層,完成具體的業(yè)務(wù)工作,例如:開啟、轉(zhuǎn)賬等。
JSP Model2適合多人合作開發(fā)大型的Web項(xiàng)目,各司其職,互不干涉,有利于開發(fā)中的分工,有利于組件的重用。但是,Web項(xiàng)目的開發(fā)難度也隨之加大,同時(shí)對(duì)開發(fā)人員的技術(shù)要求也有所提高。
下面通過一張圖來了解JSP Model2設(shè)計(jì)模式,如圖1-4所示:
圖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/
JavaEE技術(shù)點(diǎn):MySQL目錄及基本命令介紹
2017-12-26JavaEE技術(shù)點(diǎn):MySQL編碼問題
2017-12-26Java基礎(chǔ)教程:多線程(5)-----線程的調(diào)度之優(yōu)先級(jí)
2017-11-14Java基礎(chǔ)教程:多線程(4)-----線程的生命周期
2017-11-14Java基礎(chǔ)教程:多線程(3)-----創(chuàng)建線程的第二種方式
2017-11-14Java基礎(chǔ)教程:多線程(2)-----創(chuàng)建線程的第一種方式
2017-11-14