收藏博主java
https://blog.csdn.net/Song_JiangTao/article/details/80087680web
java web應用:數據庫
·M-Model,模型,通常表現爲提交的表單內容,請求參數等,是服務器與客戶端交流的數據載體;api
·V-View,表現層,用來展現客戶端請求的結果,服務器返回的數據通過渲染展現給用戶;服務器
·C-Controller,控制器,是客戶端與服務器的中間鏈接樞紐,它負責將客戶端發來的請求分配到指定的方法,執行相應的業務邏輯,而後將服務器返回的數據分配到指定的view,view好通過渲染展現給用戶。框架
流行的組合:spa
·SSH:.net
·Struts(表示層)+Spring(業務層)+Hibernate(持久層)hibernate
·SSM:設計
·SpringMVC(表示層)+Spring(業務層)+Mybatis(持久層)
業務層也是承接層,用來處理業務邏輯,一般使用數據庫中的事務來進行,按照web層的要求來對數據層進行增刪改查。
·service是業務層,是使用一個或多個模型執行操做的方法:
·封裝通用的業務邏輯、操做。如一些數據的校驗,能夠通用處理;
·與數據層交互;
·其餘請求:如遠程服務獲取數據,如第三方api等。
持久層數據大概能夠分爲三個部分:DAO、文件系統和其餘應用數據。
·DAO由一下幾個部分組成:
·DatabaseConnection:專門負責數據庫的打開與關閉操做的類;
·VO:主要由屬性、setter、getter、方法組成,VO類中的屬性與表中的字段相對應,每個VO類的對象都表示表中的每一條記錄;
·DAO:主要定義操做的接口,定義一系列數據庫的原子性操做,如增長、修改、刪除和查詢;
·impl:DAO接口的真實實現類,完成具體的數據庫操做,可是不負責數據的打開和關閉;
·Proxy:代理實現類,主要完成數據庫的打開和關閉操做,而且調用真實實現對象的操做;
·Factory:工廠類,經過工廠類取得一個DAO的實例化對象。
框架 | 缺點 |
傳統的Java Web應用程序是採用JSP+Servlet+Javabean來實現的,這種模式實現了最基本的MVC分層,使得程序結構分爲幾層,有負責前臺展現的 JSP、負責流程邏輯控制的Servlet以及負責數據封裝的Javabean | JSP頁面中須要使用符號嵌入不少的 Java代碼,形成頁面結構混亂,Servlet和Javabean負責了大量的跳轉和運算工做,耦合緊密,程序複用度低等等。 |
接下來 | |
出現了Struts框架,它是一個完美的MVC實現,它有一箇中央控制類(一個 Servlet),針對不一樣的業務,咱們須要一個Action類負責頁面跳轉和後臺邏輯運算,一個或幾個JSP頁面負責數據的輸入和輸出顯示,還有一個 Form類負責傳遞Action和JSP中間的數據。JSP中可使用Struts框架提供的一組標籤,就像使用HTML標籤同樣簡單,可是能夠完成很是複雜的邏輯 | 使用JDBC鏈接來讀寫數據庫,咱們最多見的就是打開數據庫鏈接、使用複雜的SQL語句進行讀寫、關閉鏈接,得到的數據又須要轉換或封裝後往外傳,這是一個很是煩瑣的過程。 |
接下來 | |
出現了 Hibernate框架,它須要你建立一系列的持久化類,每一個類的屬性均可以簡單的看作和一張數據庫表的屬性一一對應,固然也能夠實現關係數據庫的各類表件關聯的對應。當咱們須要相關操做時,不用再關注數據庫表。咱們不用再去一行行的查詢數據庫,只須要持久化類就能夠完成增刪改查的功能。使咱們的軟件開發真正面向對象, 而不是面向混亂的代碼 | 如今咱們有三個層了,但是每層之間的調用是怎樣的呢?好比顯示層的Struts須要調用一個業務類,就須要new一個業務類出來,而後使用;業務層須要調 用持久層的類,也須要new一個持久層類出來用。經過這種new的方式互相調用就是軟件開發中最糟糕設計的體現 |
接下來 | |
出現Spring框架。Spring Spring的做用就是徹底解耦類之間的依賴關係,一個類若是要依賴什麼,那就是一個接口。至於如何實現這個接口,這都不重要了。只要拿到一個實現了這個接口的類,就能夠輕鬆的經過xml配置文件把實現類注射到調用接口的那個類裏。全部類之間的這種依賴關係就徹底經過配置文件的方式替代了。因此 Spring框架最核心的就是所謂的依賴注射和控制反轉。 |
可是隨着時間的發展,歷史的進步,
Struts,「我我的」認爲有了更好的替代,SpringMVC,
hibernate替換爲Mybatis。
這個框架的變化,只是更好的適合了當前。中心思想仍是沒有變的。