WEB項目分層詳解

首先這是現在最基本的分層方式,結合了SSH架構。modle層就是對應的數據庫表的實體類。Dao層是使用了Hibernate連接數據庫、操作數據庫(增刪改查)。Service層:引用對應的Dao數據庫操作,在這裏可以編寫自己需要的代碼(比如簡單的判斷)。Action層:引用對應的Service層,在這裏結合Struts的配置文件,跳轉到指定的頁面,當然也能接受頁面傳遞的請求數據,也可以做些計算處理。以上的 Hibernate,Struts,都需要注入到Spring的配置文件中,Spring把這些聯繫起來,成爲一個整體。
一般java都是三層架構 數據訪問層(dao) 業務邏輯層(biz 或者services) 界面層(ui)
action 是業務層的一部分,是一個管理器 (總開關)(作用是取掉轉)(取出前臺界面的數據,調用biz方法,轉發到下一個action或者頁面)
模型成(model)一般是實體對象(把現實的的事物變成java中的對象)作用是一暫時存儲數據方便持久化(存入數據庫或者寫入文件)而是 作爲一個包裹封裝一些數據來在不同的層以及各種java對象中使用

dao是數據訪問層 就是用來訪問數據庫實現數據的持久化(把內存中的數據永久保存到硬盤中)。
Dao主要做數據庫的交互工作
Modle 是模型 存放你的實體類
Service 做相應的業務邏輯處理
Action是一個控制器

 a ction  是Struts的控制層   service是mvc中的服務層,model是java實體bean,dao是與數據庫進行交互持久層,ssh中由Hibernate實現。

  jsp傳參數給action   action調用service   service調用dao   他們相互調用的時候傳遞的參數就是model

  Struts負責前臺與後臺之間數據的傳遞、後臺完成邏輯操作之後頁面的跳轉,後臺每層之間的調用通過Spring進行類注入,在service中對model做出邏輯操作,然後傳遞給dao,在dao層中用Hibernate對數據庫進行持久化操作,根據需求,是否應有返回值。最後到action中進行頁面跳轉。

DAO是底層與數據庫直接交互的部分,serivce是又對DAO進行了一次封裝。而service是暴露給action的部分。aciton裏面調用service,service調用DAO。

  1. Action/Service/DAO簡介:

    Action是管理業務(Service)調度和管理跳轉的。

    Service是管理具體的功能的。

    Action只負責管理,而Service負責實施。

    DAO只完成增刪改查,雖然可以1-n,n-n,1-1關聯,模糊、動態、子查詢都可以。但是無論多麼複雜的查詢,dao只是封裝增刪改查。至於增刪查改如何去實現一個功能,dao是不管的。

    總結這三者,通過例子來解釋:

    Action像是服務員,顧客點什麼菜,菜上給幾號桌,都是ta的職責;

    Service是廚師,action送來的菜單上的菜全是ta做的;

    Dao是廚房的小工,和原材料打交道的事情全是ta管。

    相互關係是,小工(dao)的工作是要滿足廚師(service)的要求,廚師要滿足服務員(action)轉達的客戶(頁面用戶)的要求,服務員自然就是爲客戶服務嘍。

    現在最基本的分層方式,結合了SSH架構。Model層就是對應的數據庫表的實體類。Dao層是使用了hibernate連接數據庫、操作數據庫(增刪改查)。Service層:引用對應的Dao數據庫操作。Action層:引用對應的Service層,在這裏結合Struts的配置文件,跳轉到指定的頁面,當然也能接受頁面傳遞的請求數據,也可以做些計算處理。

    以上的Hibernate, Struts,都需要注入到spring的配置文件中,Spring把這些聯繫起來,成爲一個整體。

  2. 三大框架Struts/Hibernate/Spring

    簡單地說:

    Struts——控制用的;

    Hibernate——操作數據庫的;

    Spring——解耦用的。

    詳細地說:

    Struts在SSH框架中起控制的作用,其核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,主要控制邏輯關係的處理。

    Hibernate是數據持久化層,是一種新的對象、關係的映射工具,提供了從Java類到數據表的映射,也提供了數據查詢和恢復等機制,大大減少數據訪問的複雜度。把對數據庫的直接操作,轉換爲對持久對象的操作。

    Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。面向接口的編程,由容器控制程序之間的依賴關係,而非傳統實現中,由程序代碼直接操控。這就是所謂“控制反轉”的概念所在:(依賴)控制權由應用代碼中轉到了外部容器,控制權的轉移,是所謂反轉。依賴注入,即組件之間的依賴關係由容器在運行期決定,形象地說,即由容器動態地將某種依賴關係注入到組件之中,起到的主要作用是解耦。

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

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

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

Service爲action提供統計的調用接口,封裝持久層的DAO;
可以寫一些自己的業務方法;
統一的Javabean管理方法;
聲明式事務管理;
集成Hibernate。
(3)Hibernate,負責持久化層,完成對數據庫的crud操作。提供OR/Mapping。它由一組.hbm.xml文件和POJO,是跟數據庫中的表相對應的。然後定義DAO,這些是跟數據庫打交道的類,它們會使用PO。

  1. 框架業務邏輯分析:

    在Struts + Spring + Hibernate的系統中,

    對象的調用流程是:JSP—Action—Service—DAO—Hibernate。

    數據的流向是:ActionFormBean接受用戶的數據,Action將數據從ActionFormBean中取出,封裝成VO或PO,再調用業務層的Bean類,完成各種業務處理後再Forward。而業務層Bean收到這個PO對象之後,會調用DAO接口方法,進行持久化操作。

    SSH框架的優點:

    Hibernate的最大好處就是根據數據庫的表,反向生成實體類,並且還有關係在裏面,還有就是它對數據的操作也很方便;

    Spring,省去了在類裏面new對象的過程,把這個調用與被調用的關係直接展示到了配置文件裏,做任何操作都變得簡單了。

    簡單流程舉例說明:

    程序框架搭建好,並且把各種jar包導入後,就開始進行業務邏輯分析——

    假設一個最基本的註冊功能:頁面有兩個文本框,一個用戶名(username)和一個密碼(password)。以QQ註冊網頁說明,這裏以暱稱和密碼爲代表進行舉例。

image

    首先是action層:它是負責在頁面和程序之間傳輸數據的,還有作用是做頁面跳轉。頁面由用戶填寫表單數據,點擊提交按鈕,頁面的表單數據由Hibernate自動封裝到該頁面表單所對應的ActionFrom(ActionFrom跟實體類不是一個東西,ActionFrom是頁面有什麼值,類裏就寫什麼屬性,是用來封裝表單數據用的;而實體類是完全按照數據庫的字段生成的,實體類可以當做ActionFrom用,但ActionFrom絕對不可以當做實體類用),這樣表單數據就以ActionFrom對象的形式在Action的點擊“提交按鈕”執行的那個方法裏存在了。這個時候需要做的就是把表單數據存入數據庫中。此時,Action的功能告一段落,接着是把數據傳入BIZ層。

    BIZE層(業務邏輯層):負責的是對數據的處理。如果沒有數據處理任務的話,此層只做單純的數據傳遞作用,而後又到了DAO層。

    DAO層(數據庫操作層):負責對數據向數據庫增刪改查的操作。

    在該註冊的框架中,如果不使用Spring的話,每個層之間的數據傳遞都需要new一個調用該層數據的類的實例。而使用了Spring的話,需要做的就是把DAO層和BIZ層的每個類都寫一個接口類,接口類裏寫實現類的方法,在調用的時候不new對象,直接用對象點(.)方法就可以,別忘了對每個對象加上set/get方法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章