MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯彙集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。java
MVC開始是存在於桌面程序中的,M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可使用不一樣的表現形式。好比一批統計數據能夠分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。數據庫
模型-視圖-控制器(MVC)是Xerox PARC在二十世紀八十年代爲編程語言Smalltalk-80發明的一種軟件設計模式,已被普遍使用。後來被推薦爲Oracle旗下Sun公司Java EE平臺的設計模式,而且受到愈來愈多的使用ColdFusion和PHP的開發者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有不少好處,但也有一些缺點。編程
Model(模型)是應用程序中用於處理應用程序數據邏輯的部分。一般模型對象負責在數據庫中存取數據。設計模式
View(視圖)是應用程序中處理數據顯示的部分。一般視圖是依據模型數據建立的。瀏覽器
Controller(控制器)是應用程序中處理用戶交互的部分。一般控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據。服務器
MVC是一個框架模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分紅三個核心部件:模型、視圖、控制器。它們各自處理本身的任務。最典型的MVC就是JSP + servlet + javabean的模式。架構
簡單說一下,三層架構與MVC區別。框架
三層架構是將整個業務應用劃分爲:界面層(User Interface layer)、業務邏輯層(Business Logic Layer)、數據訪問層(Data access layer)。編程語言
MVC和三層架構相同的地方是都有一個表現層,即界面。而其餘兩個地方是不一樣的。在三層架構中沒有定義Controller的概念。這是最不一樣的地方。而MVC也沒有把業務的邏輯訪問當作兩個層,這是採用三層架構或MVC搭建程序最主要的區別。在三層中也提到了Model,可是三層架構中Model的概念與MVC中Model的概念是不同的,「三層」中典型的Model層是以實體類構成的,而MVC裏,則是由業務邏輯與訪問數據組成的。工具
(1)JSP組件:
JSP是一種動態網頁技術。它把HTML頁面中加入Java腳本,以及JSP標籤構成JSP文件。當瀏覽器請求某個JSP頁面時,Tomcat會把JSP頁面翻譯爲Java文件。而後將它編譯爲class文件,接着執行它,把生成的HTML頁面返回到客戶端顯示。
(2)Servlet組件:
Servlet運行於Web容器中。它能夠被Web容器動態加載,接收瀏覽器請求,調用其餘組件處理請求,而後把處理結果返回。當瀏覽器訪問某個Servlet時,Web容器將會建立一個ServletRequest對象和ServletResponse對象,而且把用戶的請求信息封裝在ServletRequest對象中。而後把這兩個對象做爲參數傳輸給Servlet的特定方法中。在該方法中處理請求,把處理結果封裝在ServletResponse對象中,返回給Web容器。最後Web容器把結果返回到瀏覽器去解析、顯示。
(3)JavaBean組件:
JavaBean組件是一種符合特定規範的Java對象。在JavaBean組件中定義一系列的屬性,而且每一個屬性都提供setter和getter方法,這樣就可使用該組件存儲一些中間數據。例如ServletRequest的請求信息、從數據庫中查詢出來的信息等。
(4)Web服務器
Web服務器用來處理HTTP請求,並返回HTTP數據。它主要用來和瀏覽器進行交互,給用戶提供服務。好比Tomcat服務器。
(1)JSP開發
(2)JSP+JavaBean開發
(3)JSP+Servlet+JavaBean開發
(4)其餘的一些開發方法。
(1)JSP+Servlet+JavaBean
這是最基本的Java Web基於MVC的開發框架,JSP主要用於界面顯示,至關於View;JavaBean用於和數據庫進行交互,存取數據,至關於Model;Servlet用於獲取界面輸入的信息,經過獲得JavaBean和數據庫交互獲取的數據,傳到JSP進行顯示。
(2)Struts2
經過採用JavaServlet/JSP技術,實現了基於Java EEWeb應用的MVC設計模式的應用框架,是MVC經典設計模式中的一個經典產品。Model部分仍是使用JavaBean,View部分使用JSP實現,Controller部分使用Struts提供的ActionServlet來實現。
(3)Spring MVC
Spring MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架。模型(Model )封裝了應用程序的數據和通常他們會組成的POJO。視圖(View)是負責呈現模型數據和通常它生成的HTML輸出,客戶端的瀏覽器可以解釋。控制器(Controller )負責處理用戶的請求,並創建適當的模型,並把它傳遞給視圖渲染。
(4)SSH
上網查了不少資料,下面是我的理解。
使用SSH進行Java Web開發,獲取頁面數據並處理流程:JSP → Action → Service → Dao,Dao → Service → Action → JSP。其中JSP →Action是獲取頁面數據,Action→ Service→Dao是把Action獲得的數據交由Service層進行邏輯處理,進行邏輯處理須要與數據庫交互,便調用Dao進行數據訪問。處理完成,返回結果,Action根據結果轉到不一樣的JSP頁面。因此,我的以爲SSH既涵蓋了MVC,也涵蓋了三層架構。三層架構:Dao是數據訪問層,Service是業務邏輯層,JSP是表示層。MVC:Service和Dao組成Model,Action是Controller,JSP是View。