1、MVC設計模式理解
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
Model(模型):數據模型,提供要展示的數據,因此包含數據和行為,主要提供了模型數據查詢和模型數據的狀態更新等功能,包括數據和業務。主要使用的技術:數據模型:實體類(JavaBean),數據訪問:JDBC,Hibernate等。
View(視圖):負責進行模型的展示,一般就是我們見到的用戶界面,比如JSP,Html等
Controller(控制器):接收用戶請求,委托給模型進行處理(狀態改變),處理完畢后把返回的模型數據返回給視圖,由視圖負責展示。主要使用的技術:servlet,Struts中的Action類等。
MVC是一個框架模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。最典型的MVC就是JSP + servlet + javabean的模式。
2、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是一個封裝有某個應用程序之業務邏輯服務器端組件。
3、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持久層中數據庫的操作,組成的開發方案。
4、常用的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這是一種面向切面的編程思想,這種思想使得編程思想上得到了歷史性的進步。它將程序的執行過程切割成不同的面,在面之間可以插入我們想執行的邏輯。