作用:
SSM框架是spring MVC ,spring和mybatis框架的整合,是標准的MVC模式,將整個系統划分為表現層,controller層,service層,DAO層四層
使用spring MVC負責請求的轉發和視圖管理
spring實現業務對象管理,mybatis作為數據對象的持久化引擎
原理:
SpringMVC:
1.客戶端發送請求到DispacherServlet(分發器)
2.由DispacherServlet控制器查詢HanderMapping,找到處理請求的Controller
3.Controller調用業務邏輯處理后,返回ModelAndView
4.DispacherSerclet查詢視圖解析器,找到ModelAndView指定的視圖
5.視圖負責將結果顯示到客戶端
Spring:我們平時開發接觸最多的估計就是IOC容器,它可以裝載bean(也就是我們Java中的類,當然也包括service dao里面的),有了這個機制,我們就不用在每次使用這個類的時候為它初始化,很少看到關鍵字new。另外spring的aop,事務管理等等都是我們經常用到的。
Mybatis:mybatis是對jdbc的封裝,它讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯到各實體類的Mapper文件,Mapper文件中配置了每個類對數據庫所需進行的sql語句映射。在每次與數據庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執行sql命令。
要完成一個功能:
- 先寫實體類entity,定義對象的屬性,(可以參照數據庫中表的字段來設置,數據庫的設計應該在所有編碼開始之前)。
- 寫Mapper.xml(Mybatis),其中定義你的功能,對應要對數據庫進行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
- 寫Mapper.java,將Mapper.xml中的操作按照id映射成Java函數。
- 寫Service.java,為控制層提供服務,接受控制層的參數,完成相應的功能,並返回給控制層。
- 寫Controller.java,連接頁面請求和服務層,獲取頁面請求的參數,通過自動裝配,映射不同的URL到相應的處理函數,並獲取參數,對參數進行處理,之后傳給服務層。
- .寫JSP頁面調用,請求哪些參數,需要獲取什么數據。
DataBase ===> Entity ===> Mapper.xml ===> Mapper.Java ===> Service.java ===> Controller.java ===> Jsp.
Spring MVC 擁有控制器,作用跟Struts類似,接收外部請求,解析參數傳給服務層
Spring 容器屬於協調上下文,管理對象間的依賴,提供事務機制
mybatis 屬於orm持久層框架,將業務實體 與數據表聯合 起來
Spring MVC 控制層,想當與 Struts的作用
Spring 控制反轉和依賴注入 創建對象交由容器管理,達到了解耦的作用
mybatis 主要用來操作數據庫(數據庫的增刪改查)
IOC:控制反轉,是一種降低對象之間耦合關系的設計思想,面試的時候最好能說出來個例子,加深理解。例子:租房子,以前租房子需要一個房子一個房子找,費時費力,然后現在加入一個房屋中介,把你需要的房型告訴中介,就可以直接選到需要的房子,中介就相當於spring容器。
AOP:面向切面編程,是面向對象開發的一種補充,它允許開發人員在不改變原來模型的基礎上動態的修改模型以滿足新的需求,如:動態的增加日志、安全或異常處理等。AOP使業務邏輯各部分間的耦合度降低,提高程序可重用性,提高開發效率。
持久層:DAO層(mapper)
- DAO層:DAO層主要是做數據持久層的工作,負責與數據庫進行聯絡的一些任務都封裝在此,
- DAO層的設計首先是設計DAO的接口,
- 然后在Spring的配置文件中定義此接口的實現類,
- 然后就可在模塊中調用此接口來進行數據業務的處理,而不用關心此接口的具體實現類是哪個類,顯得結構非常清晰,
- DAO層的數據源配置,以及有關數據庫連接的參數都在Spring的配置文件中進行配置。
業務層:Service層
- Service層:Service層主要負責業務模塊的邏輯應用設計。
- 首先設計接口,再設計其實現的類
- 接着再在Spring的配置文件中配置其實現的關聯。這樣我們就可以在應用中調用Service接口來進行業務處理。
- Service層的業務實現,具體要調用到已定義的DAO層的接口,
- 封裝Service層的業務邏輯有利於通用的業務邏輯的獨立性和重復利用性,程序顯得非常簡潔。
表現層:Controller層(Handler層)
- Controller層:Controller層負責具體的業務模塊流程的控制,
- 在此層里面要調用Service層的接口來控制業務流程,
- 控制的配置也同樣是在Spring的配置文件里面進行,針對具體的業務流程,會有不同的控制器,我們具體的設計過程中可以將流程進行抽象歸納,設計出可以重復利用的子單元流程模塊,這樣不僅使程序結構變得清晰,也大大減少了代碼量。
View層
- View層 此層與控制層結合比較緊密,需要二者結合起來協同工發。View層主要負責前台jsp頁面的表示.
各層聯系
- DAO層,Service層這兩個層次都可以單獨開發,互相的耦合度很低,完全可以獨立進行,這樣的一種模式在開發大項目的過程中尤其有優勢
-
Controller,View層因為耦合度比較高,因而要結合在一起開發,但是也可以看作一個整體獨立於前兩個層進行開發。這樣,在層與層之前我們只需要知道接口的定義,調用接口即可完成所需要的邏輯單元應用,一切顯得非常清晰簡單。
-
Service邏輯層設計
- Service層是建立在DAO層之上的,建立了DAO層后才可以建立Service層,而Service層又是在Controller層之下的,因而Service層應該既調用DAO層的接口,又要提供接口給Controller層的類來進行調用,它剛好處於一個中間層的位置。每個模型都有一個Service接口,每個接口分別封裝各自的業務處理方法。