一、MVC設計模式理解java
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯彙集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。程序員
Model(模型):數據模型,提供要展現的數據,所以包含數據和行爲,主要提供了模型數據查詢和模型數據的狀態更新等功能,包括數據和業務。主要使用的技術:數據模型:實體類(JavaBean),數據訪問:JDBC,Hibernate等。web
View(視圖):負責進行模型的展現,通常就是咱們見到的用戶界面,好比JSP,Html等spring
Controller(控制器):接收用戶請求,委託給模型進行處理(狀態改變),處理完畢後把返回的模型數據返回給視圖,由視圖負責展現。主要使用的技術:servlet,Struts中的Action類等。數據庫
MVC是一個框架模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分紅三個核心部件:模型、視圖、控制器。它們各自處理本身的任務。最典型的MVC就是JSP + servlet + javabean的模式。編程
二、Java web 應用程序的經常使用組件設計模式
JAVA web通常叫作J2EE java 2企業級版本,組件包含不少:JSP/SERVLET, Web Service, Message, EJB等等。瀏覽器
JSP服務器
JSP是一種動態網頁技術。它把HTML頁面中加入Java腳本,以及JSP標籤構成JSP文件。當瀏覽器請求某個JSP頁面時,Tomcat會把JSP頁面翻譯爲Java文件。架構
Serverlet
Servlet運行於Web容器中,如Tomcat,它能夠被Web容器動態加載,接收瀏覽器請求,調用其餘組件處理請求,而後把處理結果返回。當瀏覽器訪問某個Servlet時,Web容器將會建立一個ServletRequest對象和ServletResponse對象,而且把用戶的請求信息封裝在ServletRequest對象中。而後把這兩個對象做爲參數傳輸給Servlet的特定方法中。在該方法中處理請求,把處理結果封裝在ServletResponse對象中,返回給Web容器。最後Web容器把結果返回到瀏覽器去解析、顯示。
EJB
企業級JavaBean(Enterprise JavaBean, EJB)是一個用來構築企業級應用的服務器端可被管理組件。Java企業版API(Java Enterprise Edition)中提供了對EJB的 規範。EJB是一個封裝有某個應用程序之業務邏輯服務器端組件。
三、Java web 的解決方案(開發方法)
JSP+JavaBean
該模式將業務邏輯與頁面表現進行分離,在必定程度上增長了程序的可調試性和維護性。簡單,適合小型項目的快速構建與運行。
JSP+javaBean+Serverlet
JSP做爲視圖,來表現頁面;Servlet做爲控制器,控制程序的流程並調用業務進行處理;JavaBean封裝了業務邏輯。遵循了MVC設計模式。也是最爲基礎的一種構思方式。
Spring
創建在覈心模塊之上,嫩夠適應於多種多視圖、模板技術、國際化和驗證服務,實現控制邏輯和業務邏輯清晰的分離。
JSP+Struts+Hibernate
利用Struts的MVC設計模式,與Hibernate持久化對象組成的開發方案。
JSP+Struts+Spring+Hibernate
Struts負責表示層,Spring負責邏輯層的業務, Hibernate持久層中數據庫的操做,組成的開發方案。
四、經常使用的Java web 的MVC框架
Struts2
Struts2是流行和成熟的基於MVC設計模式的Web應用程序框架。 Struts2不僅是Struts1下一個版本,它是一個徹底重寫的Struts架構。Struts對Model,View和Controller都提供了對應的組件。可是在ssh開發過程當中主要用Struts做爲三層架構中的表現層,也就是MVC中的View和Control層。
Struts2提供了表單提交參數封裝成POJO類,提交參數的類型轉換,輸入校驗,文件的上傳下載,程序的國際化,Struts2標籤,以及對AJAX的支持。
Hibernate
Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。 Hibernate能夠應用在任何使用JDBC的場合,既能夠在Java的客戶端程序使用,也能夠在Servlet/JSP的Web應用中使用,說的簡單點:就是功能更增強大的JDBC。
Hibernate實現了對象到數據庫端的封裝。就是常說的ORM(Object Relation Mapping),它的出現使得編程更加的面向對象,在傳統的編程上,咱們要將對象存儲到關係數據庫中,須要寫不少代碼來實現,並且須要考慮跨數據庫的平臺的問題。有了Hibernate能夠方便的實現從對象轉換到關係數據庫。這就是對象持久化。
Spring
主要包含兩個重要功能:IOC和AOP,也就是常說的依賴注入和麪向切面編程。固然還有Spring的事務功能,不過這一功能是在結合前面二者的功能實現的。
IOC依賴注入(控制反轉),是一種設計模式。一層含義是控制權的轉移:由傳統的在程序中控制依賴轉移到由容器來控制;第二層是依賴注入:將相互依賴的對象分離,在spring配置文件中描述他們的依賴關係。他們的依賴關係只在使用的時候才創建。簡單來講就是不須要NEW一個對象了。
AOP這是一種面向切面的編程思想,這種思想使得編程思想上獲得了歷史性的進步。它將程序的執行過程切割成不一樣的面,在面之間能夠插入咱們想執行的邏輯。