MVC是一種架構型模式,它自己並不引入新的功能,只是用來指導咱們改善應用程序的架構,使得應用的模型和視圖相分離,從而獲得更好的開發和維護效率。html
在MVC模式中,應用程序被劃分紅了模型(Model)、視圖(View)和控制器(Controller)三個部分。其中,模型部分包含了應用程序的業務邏輯和業務數據;視圖部分封裝了應用程序的輸出形式,也就是一般所說的頁面或者是界面;而控制器部分負責協調模型和視圖,根據用戶請求來選擇要調用哪一個模型來處理業務,以及最終由哪一個視圖爲用戶作出應答。java
MVC模式的這三個部分的職責很是明確,並且相互分離,所以每一個部分均可以獨立的改變而不影響其餘部分,從而大大提升了應用的靈活性和重用性。數據庫
在MVC模式中,一個應用被劃分紅了模型(Model)、視圖(View)和控制器(Controller)三個部分,接下來認識一下這三個部分。windows
1:首先看一下模型、視圖、控制器各部分的做用tomcat
2:模型和視圖的關係服務器
在MVC中,模型和視圖是分離的,一般視圖裏面不會有任何邏輯實現;而模型也是不依賴於視圖的,同一個模型可能會有不少種不一樣的展現方式,也就是同一個模型能夠對應多種不一樣的視圖。架構
這種例子比比皆是,例如,在windows操做系統上瀏覽文件夾時,文件夾就那些,數據並無變化,可是展現方式就有多種,好比大圖標、小圖標、詳細信息等等多種展現方式。以tomcat7文件夾下的文件爲例,按照不一樣的展現方式,如圖1.1所示:app
Model1模式:使用純JSP或者JSP+JavaBean開發,存在以下缺陷:JSP頁面中混合了HTML和JAVA代碼,從而給代碼的開發和閱讀帶 來了麻煩;系統後期維護和擴展很是困難,例如在JSP頁面進行數據庫鏈接和操做,若是須要對數據庫進行任何修改,都必須打開全部操做數據庫的JSP頁面進 行相應的修改,當頁面很是多的時候,工做量至關大;系統不容易調試,因爲HTML、JAVA、JavaScript都混合在一塊兒,必需要啓動服務器並調用 JSP頁面才能查看運行效果。故此模式適合小規模的WEB應用開發。
JSP+JavaBean開發,雖然實現了邏輯功能和顯示功能的分離,可是因爲視圖層和控制層都是由JSP頁面實現的,即視圖層和控制層沒有實現分離,因此它任然屬於Model1模式。post
Model2模式——MVC開發模式
它是爲了克服Model1存在的不足而設計的,MVC的具體含義是:model+view+control,即模型+視圖+控制,這樣的模式集成了JSP、Serclet、JavaBean,很是適合大型項目的開發。url
View視圖層:
表明和用戶交互的界面,能夠經過html、xml、applet小java程序等實現,它僅僅負責數據的採集和處理(顯示)。在JSP中它由JSP頁面單獨實現。
Model模型層:
它經常使用JavaBean來編寫,它接受視圖層請求的數據,而後進行相應的業務處理並返回最終的處理結果,它負擔的責任最爲核心,並利用JavaBean具備的特性實現了代碼的重用和擴展以及給維護帶來了方便。
Control控制層:
控制層是從用戶端接收請求,而後將請求傳遞給模型層並告訴模型層應該調用什麼功能模塊來處理該請求,它將協調視圖層和模型層之間的工做,起到中間樞紐的做用,它通常交由Serclet來實現。
MVC開發模式與Model1模式比較,顯示出以下特色:(1)各層各負其責,互不干涉。各自更新以後對其它層沒有任何干擾;(2)MVC開發模式有利於責任分工,讓專門人員分別從事專門層的設計,提升工做效率和質量;(3)組件能夠獲得很好的重用,因爲分工明確,各層的組件能夠獨立成一個能夠重用的組件。 可是MVC開發模式相對Model1來講比較複雜,因此它比較適合開發大中型項目應用,而Model1模式適合小規模的WEB應用開發。