即視圖-幫助者。目的是:分離視圖與邏輯代碼(只是簡單分離,與MVC下降耦合有很大不一樣)。css
視圖:負責數據顯示與提交,即jsp、el和jstl等頁面的表示。html
幫助者:提供功能模塊、業務邏輯處理、數據交換等(此時業務邏輯層與表示層或數據層混在一塊兒)。前端
舉個例子,在 Web 1.0 時代,一個 ASP 或 JSP 頁面裏,HTML 和腳本代碼混在一塊兒,此時腳本代碼越多,系統越混亂(即熵增長),最終連開發者本身都沒法理解。此時就須要對系統從新架構,辦法是引入 view helper 模式,分離 HTML 和腳本,HTML 成爲 view,腳本成爲幫助類。而後再簡單整合在一塊兒。經過從新分和合,整個系統層次清晰,職責明確,系統的無序度下降,容易維護。java
具體實現例子:(1)、如在表現層使用view-helper模式,jQuery框架,jsp(el+jstl)作視圖,引入jQuery.js作helper提供字符串處理功能、css動畫效果、異步數據獲取等。spring
(2)、如在jsp+servlet或jsp+javaBean的開發模式中,前端jsp作view,後端servlet或javaBean提供業務邏輯、數據處理等功能。數據庫
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。後端
- 模型:模型層負責封裝應用的狀態,並實現數據處理和業務邏輯。
- 視圖:視圖層負責數據的顯示與提交。
- 控制器:負責控制視圖層發送的請求以及程序流程的控制。
MVC一個籠統的設計模式,要求把應用的模型按必定的層次規則抽取出來,將業務邏輯彙集到一個部件裏面(模型),控制器控制程序流程,在改進和個性化定製界面及用戶交互的同時,不須要從新編寫業務邏輯。設計模式
MVC提供了讓模型和視圖相分離的思路——提取出專門的控制器。咱們把頁面跳轉關係管理、流程控制、表單數據的封裝及驗證、國際化等任務交給控制器處理。如java開發中,jsp專一視圖、servlet專一控制、javaBean處理邏輯。構成jsp+servlet+javaBean的MVC開發模式。架構
Controller被設計爲處理用戶交互的邏輯。一個一般的誤解是認爲Controller負責處理View和Model的交互,而實際上View和Model之間是能夠直接通訊的。爲了實現視圖與業務邏輯的解耦,才加入controller這個中間層。框架
DAO即Data Access Object,數據訪問接口。數據訪問:故名思義就是與數據庫打交道。夾在業務邏輯與數據庫資源中間,在model層將業務邏輯與數據訪問分離。
四個組件:
DBUtils工具類---負責數據庫的鏈接與關閉
Dao接口---定義增刪該查的抽象方法,一個領域模型對應一個Dao接口。
Dao接口的實現類
VO值對象---一個VO對應一個數據表,便於把對數據表的操做轉化成對java類的操做。
三層架構(3-tier architecture) 將整個業務應用劃分爲:表現層(User Interface layer)、業務邏輯層(Business Logic Layer)、數據訪問層(Data access layer)。
區分層次的目的即爲了「高內聚低耦合」的思想。在軟件體系架構設計中,分層式結構是最多見,也是最重要的一種結構。
表現層(UI):表示層由處理用戶交互的客戶端組件及其容器所組成(html、css、js、jsp、el和jstl等);
業務邏輯層(BLL):業務邏輯層由解決業務問題的組件組成;
數據訪問層(DAL):數據層由一個或多個數據庫組成,並可包含存儲過程。
三層架構思想,是一種籠統的架構思想,沒有限制具體的設計,三層是縱向的、下層向上層提供服務。
通常具體實現:用MVC設計模式解耦表現層和業務邏輯層;Dao設計模式做數據訪問層。
開發模式:即軟件設計套路;選擇框架結構填充代碼的軟件開發方式(這裏的框架是按照三層架構思想、MVC和Dao等設計模式具體實現軟件的成熟框架結構)
一、適合規模較小的軟件系統(兩層架構)
jsp+servlet
將數據訪問抽象出來:jsp+servlet+Dao設計模式
二、適合較大規模的軟件系統(三層架構)
jsp+servlet+javaBean
將數據訪問抽象出來:jsp+servlet+javaBean+Dao設計模式
三、流行框架:ssh(structs+spring+hibranate)
- jsp、el和jstl對應表示層
- struts對應控制層
- spring+hibranate對應業務邏輯層
總結:分層的具體界限並不必定,根據軟件規模甚至功能模塊的複雜性有所不一樣。總之,理解三層架構的軟件體系思想,結合MVC、Dao等模式,根據項目規模、複雜性等具體問題具體解決。