對SpringMVC、Struts2、Hibernate以及Mybatis工作原理的初步理解
一、看了對SpringMVC原理的介紹,我畫了一張圖:
按圖中序號依次向下進行:
1.使用者傳送請求到前端控制器DispatcherServlet
2.DispatcherServlet收到請求呼叫處理器對映器HandlerMapping
3.HandlerMapping找到具體的處理器,生成處理器物件以及處理器攔截器(如果有則生成),一併將其返回給DispatcherServlet(圖中的第3步和第4步)
4.DispatcherServlet根據收到的處理器物件呼叫HandlerAdapter處理器介面卡
5.HandlerAdapter通過適配找到合適的處理器,也叫後端控制器(Controller)
6.後端控制器執行完畢後生成ModelAndView並通過HandlerAdapter返回給DispatcherServlet
7.DispatcherServlet將生成的ModelAndView傳給ViewReslover檢視解析器
8.ViewReslover將ModelAndView生成具體的View
9.DispatcherServlet根據生成的View進行檢視渲染
10.最終將渲染後的檢視反饋給使用者
二、對struts2的理解,雖然看起來字很多,但是因為它的作用範圍小,其實是一張更簡單的圖:
1.客戶端初始化一個指向Servlet容器的請求
2.請求經過一系列過濾器的處理到達FilterDispatcher(圖中第2步和 第3步)
3.FilterDispatcher被呼叫,詢問ActionMapper是否需要呼叫某個Action,如果不需要,則返回Servlet,使用者請求失敗,如果需要,繼續進行
4.FileDispatcher將請求的處理交給ActionProxy
5.ActionProxy根據Configuration Manager詢問框架的配置檔案,找到需要呼叫的Action類
6.ActionProxy建立Action的例項ActionInvocation
7.Action執行完畢後,ActionInvocation根據Struts.xml配置檔案找到對應的返回結果
8.返回結果通過ActionMapper返回到Servlet容器
9.Servlet將結果反饋給使用者
三、Hibernate是一種ORM框架,工作原理大概就是程式執行過程:
1.通過Configuration().configure();讀取並解析配置檔案
2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>讀取並解析對映資訊
3.通過config.buildSessionFactory();//建立SessionFactory
4.sessionFactory.openSession();//開啟Session
5.session.beginTransaction();//建立事務Transation
6.persistent operate 持久化操作
7.session.getTransaction().commit();//提交事務
8.關閉Session
9.關閉SessionFactory
四、Mybatis將對資料庫的操作寫在了xml檔案裡,簡化了對資料庫的操作
Mybatis應用程式根據XML配置檔案建立SqlSessionFactory,SqlSessionFactory再根據配置,配置來源於兩個地方,一處是配置檔案,一處是Java程式碼的註解,獲取一個SqlSession。SqlSession包含了執行sql所需要的所有方法,可以通過SqlSession例項直接執行對映的sql語句,完成對資料庫的增刪改查和事務提交等,用完之後關閉SqlSession.