今天就跟大家聊聊有關什么是ssm框架原理及流程,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供嘉魚網站建設、嘉魚做網站、嘉魚網站設計、嘉魚網站制作等企業(yè)網站建設、網頁設計與制作、嘉魚企業(yè)網站模板建站服務,10余年嘉魚做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
ssm框架原理是:將Spring、SpringMVC、MyBatis整合在一起,作為數(shù)據(jù)源較簡單的web項目的框架。流程是:Handler Mapping根據(jù)請求找到相應的Handler,調用業(yè)務邏輯進行處理,然后進行視圖解析即可。
SSM框架簡介
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。SSM常作為數(shù)據(jù)源較簡單的web項目的框架。
SpringMVC
SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔中介的職責,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執(zhí)行的操作。
SpringMVC框架運行流程
用戶將請求發(fā)送至DispatcherServlet;
DispatcherServlet收到請求查詢一個或多個HandlerMapping,找到處理該請求的Handler;
HandlerMapping根據(jù)請求找到相應的Handler,生成Handler對象返回給DispatcherServlet;
DispatcherServlet通過HandlerAdapter調用Handler;
Handler(Controller)調用業(yè)務邏輯(service)進行處理,處理完成返回ModelAndView;
HandlerAdapter將Handler處理結果ModelAndView返回給DispatcherServlet;
DispatcherServlet查詢一個或多個ViewReslover(視圖解析器),將ModelAndView傳給指定的ViewReslover;
ViewReslover解析后返回具體View給DispatcherServlet;
DispatcherServlet對View進行渲染(將模型數(shù)據(jù)填充至視圖中);
DispatcherServlet響應用戶,View將結果顯示在客戶端。
流程大致如下圖:
DispatcherServlet是整個Spring MVC的核心,它負責接收HTTP請求,組織協(xié)調Spring MVC的各個組成部分,其主要的工作有以下3項:
a. 截獲符合特定格式的URL請求;
b. 初始化DispatcherServlet上下文對應的WebApplicationContext,并將其與業(yè)務層、持久層的WebApplicationContext建立關聯(lián);
c. 初始化Spring MVC的各個組件,并配裝到DispatcherServlet中。
Spring
Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調用實體類的構造方法來實例化對象。也可以稱之為項目中的粘合劑。
Spring的核心思想是IOC(控制反轉),即不再需要程序員去顯式地new一個對象,而是讓Spring框架幫你來完成這一切。IOC容器負責實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。Spring的目的就是讓對象與對象(模塊與模塊)之間的關系沒有通過代碼來關聯(lián),都是通過配置類說明管理的(Spring根據(jù)這些配置,內部通過反射去動態(tài)的組裝對象)。
IOC容器代表的就是org.springframework.beans包中的BeanFactory接口,其提供了IOC容器的基本功能;而org.springframework.context包下的ApplicationContext接口擴展了BeanFactory,還提供了與Spring AOP集成、國際化處理、事件傳播及提供不同層次的context實現(xiàn)。
簡單說,BeanFactory提供了IOC容器最基本功能,而ApplicationContext則增加了更多支持企業(yè)級功能支持。ApplicationContext完全繼承BeanFactory,因而BeanFactory所具有的語義也適用于ApplicationContext。
Spring運行流程
加載配置文件,ApplicationContext接口。配置文件中的bean的信息被加載在HashMap中,一個bean通常包括,id,class,property等,bean的id對應HashMap中的key,HashMap中的value就是bean。
調用getBean方法,getBean是用來獲取applicationContext.xml文件里bean的,參數(shù)是bean的id。一般情況都會強制轉換成對應的業(yè)務層(接口)。
調用業(yè)務層(接口實現(xiàn))的方法。
bean中的內容是怎么注入進去的?簡單來講,就是在實例化一個bean時,實際上就實例化了類,它通過反射調用類中set方法將事先保存在HashMap中的類屬性注入到類中。這樣就回到了我們Java最原始的地方,對象.屬性,對象.方法。
Mybatis
Mybatis是對jdbc的封裝,它讓數(shù)據(jù)庫底層操作變的透明。Mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯(lián)到各實體類的Mapper文件,Mapper文件中配置了每個類對數(shù)據(jù)庫所需進行的sql語句映射。在每次與數(shù)據(jù)庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執(zhí)行sql命令。
Mybatis通過MapperProxy動態(tài)代理dao,也就是說,當執(zhí)行自己寫的dao里面的方法的時候,其實是對應的MapperProxy在代理。
Mybatis運行原理
加載配置文件
將SQL的配置信息加載成為一個個MappedStatement對象,包括了參數(shù)映射配置,執(zhí)行的SQL語句,結果映射配置,存儲在內存中。
SQL解析
當API接口層接收到調用請求時,會接收到傳入SQL的ID和傳入對象(可以是Map/JavaBean或者基本數(shù)據(jù)類型),Mybatis會根據(jù)SQL的ID找到對應的MappedStatement,然后根據(jù)傳入的參數(shù)對象MappedStatement進行解析,解析后可以得到最終要執(zhí)行的SQL語句和參數(shù)。
SQL執(zhí)行
將最終得到的SQL和參數(shù)拿到數(shù)據(jù)庫執(zhí)行,得到操作數(shù)據(jù)庫的結果。
結果映射
將操作數(shù)據(jù)庫的結果按照映射的配置進行轉換,可以轉換成HashMap/JavaBean或者基本數(shù)據(jù)類型,并將最終的結果返回。
看完上述內容,你們對什么是ssm框架原理及流程有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。