java中的各種架構

常見包名的含義:

  • dao 數據庫操作,增刪改查,jdbc中具體的數據處理
  • model 一般是javabean對象,與數據庫的某個表相關聯
  • service 供外部調用,等於對dao,model等進行了包裝
  • bean getter,setter方法
  • util:工具類,理論上應該所有方法都是static的,如字符串處理、日期處理,數據庫連接的工具類,jdbc中DBUtil獲取數據庫鏈接、關閉數據庫鏈接(getConnection,close)

MVC架構

基本思想就是把程序界面和業務邏輯分離開來,方便開發、測試以及後期爲維護,增強各模塊間的獨立性,避免牽一髮而動全身:

  • Model(模型):用於實現一些數據業務邏輯,主要是接受處理數據以及訪問操作數據庫
  • View(視圖):用於向用戶顯示一些數據
  • Controller(控制器):用於處理應用與用戶的交互,主要是從View(視圖)讀取數據,控制用戶輸入,將數據發送到Model(模型)

Servlet+JSP(Javaweb)中MVC的分工:

  • Model(模型):以javabean爲主體,實現數據邏輯和數據庫訪問操作
  • View(視圖):JSP或HTML頁面爲主體,可配合ajax實現高可交互性的異步通訊
  • Controller(控制器):以Servlet爲主體,實現如讀取用戶表單提交信息等功能,並將數據發送到javabean進行處理

其中,Model(模型)層又可以分爲DAO(Data Access Object 數據訪問對象)層與service業務層,DAO層負責將數據庫訪問代碼封閉,而業務層負責封裝業務邏輯,處理數據,實現用戶需求,最爲核心:

  • Model(/domain):定義一個javabean。
  • Dao:持久層,數據庫操作,增刪查改。
  • Service:業務邏輯層,完成相應的業務邏輯處理,需要操作數據的時候,通過service層訪問DAO層來實現 。
  • Controller(servlet):完成界面請求、對界面進行跳轉。servlet調用service層。

 

Javaweb架構的歷史沿革:

 ①JSP Model1第一代 
JSP Model1是JavaWeb早期的模型,它適合小型Web項目,開發成本低!Model1第一代時期,服務器端只有JSP頁面,所有的操作都在JSP頁面中,連訪問數據庫的API也在JSP頁面中完成。也就是說,所有的東西都耦合在一起,對後期的維護和擴展極爲不利。
JSP Model1第一代

②JSP Model1第二代
JSP Model1第二代有所改進,把業務邏輯的內容放到了JavaBean中,而JSP頁面負責顯示以及請求調度的工作。雖然第二代比第一代好了些,但還讓JSP做了過多的工作,JSP中把視圖工作和請求調度(控制器)的工作耦合在一起了。

這裏寫圖片描述

③JSP Model2 
JSP Model2模式已經可以清晰的看到MVC完整的結構了。 
·JSP:視圖層,用來與用戶打交道。負責接收用來的數據,以及顯示數據給用戶; 
·Servlet:控制層,負責找到合適的模型對象來處理業務邏輯,轉發到合適的視圖; 
JavaBean:模型層,完成具體的業務工作,例如:開啓、轉賬等。
這裏寫圖片描述

 

 

三層架構

  • 表現層(UI):展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。
  • 業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。
  • 數據訪問層(DAL):直接操作數據庫,對數據表CRUD(增刪改查)操作。

SSH框架中:  

Struts位於web層,Spring位於service層,Hibernate位於dao層 。 

Struts、Spring、Hibernate在各層的作用:

Struts負責Web層:ActionFormBean接收網頁中表單提交的數據,然後通過Action進行處理,再Forward到對應的網頁。在Struts-config.xml中定義<action-mapping>,ActionServlet會加載。

Spring負責業務層管理,即Service(或Manager)。

Service爲action提供統計的調用接口,封裝持久層的DAO; 可以寫一些自己的業務方法; 統一的Javabean管理方法; 聲明式事務管理; 集成Hibernate。     

Hibernate,負責持久化層,完成對數據庫的crud操作。提供OR/Mapping。它由一組.hbm.xml文件和POJO,是跟數據庫中的表相對應的。然後定義DAO,這些是跟數據庫打交道的類,它們會使用PO。

 

  • Struts在SSH框架中起控制的作用,其核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,主要控制邏輯關係的處理。
  • Hibernate是數據持久化層,是一種新的對象、關係的映射工具,提供了從Java類到數據表的映射,也提供了數據查詢和恢復等機制,大大減少數據訪問的複雜度。把對數據庫的直接操作,轉換爲對持久對象的操作。
  • Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。面向接口的編程,由容器控制程序之間的依賴關係,而非傳統實現中,由程序代碼直接操控。這就是所謂“控制反轉”的概念所在:(依賴)控制權由應用代碼中轉到了外部容器,控制權的轉移,是所謂反轉。依賴注入,即組件之間的依賴關係由容器在運行期決定,形象地說,即由容器動態地將某種依賴關係注入到組件之中,起到的主要作用是解耦。
     

MVC架構與三層架構

使用範圍不同:三層可以應用於任何語言、任何技術的應用程序;而MVC只是爲了解決BS應用程序視圖層各部分的耦合關係。它們互不衝突,可以同時存在,也可根據情況使用其中一種。

MVC架構與三層架構的對應關係:

三層架構中的UI對應MVC中的view(jsp),都是用於顯示以及獲取界面的數據;三層架構中的BLL層和DAL層對應MVC中的Model(javabean)層都是用於處理上層傳遞來的數據以及從數據庫獲取的數據的;MVC中的Controller(Servlet)最多算是三層架構中的UI的一部分,也就我們常說的是Servlet。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章