學習MVC模式java
1、MVC簡介程序員
MVC是Model-View-Controller的簡稱,即模型-視圖-控制器。MVC是一種設計模式,它把應用程序分紅三個核心模塊:模型、視圖、控制器,它們各自處理本身的任務。數據庫
一、模型(Model)編程
a、模型是應用程序的主體部分,模型表示業務數據和業務邏輯。後端
b、一個模型能爲多個視圖提供數據。設計模式
c、因爲應用於模型的代碼只需寫一次就能夠被多個視圖重用,因此提升了代碼的可重用性。瀏覽器
二、視圖(View):服務器
簡單來講就是在頁面上填寫java代碼實現顯示。框架
詳細來講視圖是用戶看到並與之交互的界面,做用有:jsp
a、視圖向用戶顯示相關的數據
b、接受用戶的輸入
c、不進行任何實際的業務處理
三、控制器(Controller)
a、控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。
b、控制器接受並決定調用哪一個模型組件去處理請求,而後決定調用哪一個視圖來顯示模型處理返回的數據。
受理請求--->獲取請求參數--->調用DAO方法--->可能會把DAO方法的放繪製放入request中--->轉發或重定向頁面
用實際的流程來講,至關於一個a.jsp向servlet發送一個get請求要求全部的學生信息,而後servlet的doGet()方調用模型層dao裏的getAll()
方法返回學生的List對象,把獲得的對象放入request中,而後請求轉發到b.jsp,b.jsp對剛纔轉發過來的數據進行遍歷,顯示。dao對象固然是調用getAll()方法,把值返回List.
最後,用流程圖來總結一下:
2、Java Web應用程序的主要組件
一、Servlet
Servlet是用Java語言編寫的,它是一個Java類。於是Servlet遵照全部Java語言的語法規則,而且它能夠調用通常Java程序能夠調用的系統包。
Servlet是在服務器端運行的。它編譯後的「.class」文件被服務器端調用和執行。Web服務器使用該class文件去處理瀏覽器請求,並將處理的結果返回到客戶端。
Servlet的主要功能是用來接受、處理客戶端請求,並把處理結果返回到客戶端顯示。其過程以下所述。
a、客戶端把請求送到Servlet處理
b、Servlet處理請求
c、Servlet把請求的結果返回到客戶端顯示
二、JavaBean
JavaBean組件就是一些遵循特定接口格式的Java類。這種接口格式對Java類的方法命名、底層行爲、繼承與實現等有特定的要求。在Java Web開發中,JavaBean每每用來封裝程序的業務邏輯,它們是能夠重用的組件。經過使用JavaBean,JSP文件中的Java腳本能夠大大地減小,從而使JSP更容易維護。
JavaBean在Java Web開發中主要用來處理業務邏輯。JSP或者Servlet能夠調用JavaBean去處理複雜的操做。
JavaBean的屬性用於表示其內部狀態。在Java Web開發中,其屬性主要用來存儲中間數據。例如,能夠用從數據庫中取出的數據來設置JavaBean的屬性。這樣JSP文件就能夠在須要時從JavaBean中把這些值取出,而後在客戶端將其顯示出來。
咱們經常使用<jsp:useBean>這個標籤在JSP文件中使用JavaBean。在JavaBean中,可使用JDBC進行數據庫操做,好比鏈接數據庫、查詢數據庫、向數據庫中插入數據等。在JSP中使用Java腳本雖然也能夠進行數據庫操做,可是這樣會形成頁面過於複雜、臃腫,維護起來很是不方便,這種缺點在大型項目中更加突出。使用JavaBean操做數據庫,而後把操做的結果返回給JSP頁面去顯示,這樣就減輕了JSP的負擔,使其更專一於頁面顯示。
3、Java Web解決方案(開發方法)
JSP頁面編程
JSP+JavaBean設計模式
JSP+Servlet設計模式
JSP+Servlet+JavaBean設計模式
4、經常使用的Java Web的MVC框架
一、Spring MVC
它的設計是圍繞DispatcherServlet展開的,DispatcherServlet負責將請求派發到特定的handler。核心是 DispatcherServlet,它的做用是將請求分發給不一樣的後端處理器(controller)。
二、Struts
它是一個基於Sun J2EE平臺的MVC框架,主要是採用Servlet和JSP技術來實現的。Struts把Servlet、JSP、自定義標籤和信息資源整合到一個統一的框架中,開發人員利用其進行開發時不用再本身編碼實現全套MVC模式,極大的節省了時間。Struts就是MVC中的C的角色,由於它主要是負責action,處理各類請求。
5、MVC的優勢
一、低耦合性
視圖層和業務層分離,這樣就容許更改視圖層代碼而不用從新編譯模型和控制器代碼,一樣,一個應用的業務流程或者業務規則的改變只須要改動MVC的模型層便可。由於模型與控制器和視圖相分離,因此很容易改變應用程序的數據層和業務規則。
二、高可用性和適用性
隨着技術的不斷進步,如今須要用愈來愈多的方式來訪問應用程序。MVC模式容許你使用各類不一樣樣式的視圖來訪問同一個服務器端的代碼。它包括任何WEB(HTTP)瀏覽器或者無線瀏覽器(wap),好比,用戶能夠經過電腦也可經過手機來訂購某樣產品,雖然訂購的方式不同,但處理訂購產品的方式是同樣的。因爲模型返回的數據沒有進行格式化,因此一樣的構件能被不一樣的界面使用。例如,不少數據可能用HTML來表示,可是也有可能用WAP來表示,而這些表示所須要的命令是改變視圖層的實現方式,而控制層和模型層無需作任何改變。
三、較低的生命週期成本
MVC使下降開發和維護用戶接口的技術含量成爲可能。
四、快速的部署
使用MVC模式使開發時間獲得至關大的縮減,它使程序員(Java開發人員)集中精力於業務邏輯,界面程序員(HTML和JSP開發人員)集中精力於表現形式上。
五、可維護性
分離視圖層和業務邏輯層也使得WEB應用更易於維護和修改。
六、有利於軟件工程化管理
因爲不一樣的層各司其職,每一層不一樣的應用具備某些相同的特徵,有利於經過工程化、工具化管理程序代碼。
6、MVC的缺點
一、MVC的缺點是因爲它沒有明確的定義,因此徹底理解MVC並非很容易。使用MVC須要精心的計劃,因爲它的內部原理比較複雜,因此須要花費一些時間去思考。
二、你將不得不花費至關可觀的時間去考慮如何將MVC運用到你的應用程序,同時因爲模型和視圖要嚴格的分離,這樣也給調試應用程序帶來了必定的困難。每一個構件在使用以前都須要通過完全的測試。一旦你的構件通過了測試,你就能夠毫無顧忌的重用它們了。
三、根據開發者經驗,因爲開發者將一個應用程序分紅了三個部件,因此使用MVC同時也意味着你將要管理比之前更多的文件,這一點是顯而易見的。這樣好像咱們的工做量增長了,可是請記住這比起它所能帶給咱們的好處是不值一提。
四、MVC並不適合小型甚至中等規模的應用程序,花費大量時間將MVC應用到規模並非很大的應用程序一般會得不償失。
五、MVC設計模式是一個很好建立軟件的途徑,它所提倡的一些原則,像內容和顯示互相分離可能比較好理解。可是若是你要隔離模型、視圖和控制器的構件,你可能須要從新思考你的應用程序,尤爲是應用程序的構架方面。若是你肯接受MVC,而且有能力應付它所帶來的額外的工做和複雜性,MVC將會使你的軟件在健壯性,代碼重用和結構方面上一個新的臺階。
其實對於我我的來講,對於MVC並非很熟練,甚至說不是很瞭解。由於我更多的是從網上了解到這些知識,目前並無很好的應用到我的的做業和項目當,因此如今更多的是瞭解,爲以後的使用打下基礎。瞭解更多的知識,有利於提高咱們的我的能力。