Struts2工作原理
1 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求
2 這個請求經過一系列的過濾器(Filter)
3
FilterDispatcher或StrutsPrepareAndExecuteFilter詢問ActionMapper來決定這個請是否需要調用某個Action
4 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy
5 ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類
6 ActionProxy創建一個ActionInvocation的實例。
7 ActionInvocation實例使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是一個需要被表示的JSP。在表示的過程中可以使用Struts2 框架中繼承的標籤。在這個過程中需要涉及到ActionMapper
Controller、ActionProxy、ActionMapping、Configuration
Manager、ActionInvocation、Inerceptor、Action、Result。
MyBatis工作原理
1.讀取並解析配置文件
2.根據XML配置文件創建SqlSessionFactory
3.SqlSessionFactory在根據配置,配置來源於兩個地方,一處是配置文件,一處是Java代碼的註解,獲取一個SqlSession。
4.創建事務
5.SqlSession包含了執行sql所需要的所有方法,可以通過SqlSession實例直接運行映射的sql語句,完成對數據的增刪改查
6.事務提交
7.關閉SqlSession
8.關閉SqlSessionFactory
MyBatis的SQL是自己手動寫的所以調整方便。
MyBatis項目中所有的SQL語句都是依賴所用的數據庫的,所以不同數據庫類型的支持不好。
Hibernate工作原理
1.讀取並解析配置文件
2.讀取並解析映射信息,創建SessionFactory
3.打開Sesssion
4.創建事務Transation
5.持久化操作
6.提交事務
7.關閉Session
8.關閉SesstionFactory
Hibernate的調優方案
- 制定合理的緩存策略;
- 儘量使用延遲加載特性;
- 採用合理的Session管理機制;
- 使用批量抓取,設定合理的批處理參數(batch_size);
- 進行合理的O/R映射設計
Hibernate與具體數據庫的關聯只需在XML文件中配置即可,所有的HQL語句與具體使用的數據庫無關,移植性很好。
SpringMVC工作原理
1. 客戶端請求提交到DispatcherServlet
2. 由DispatcherServlet控制器查詢一個或多個HandlerMapping,找到處理請求的Controller
3. DispatcherServlet將請求提交到Controller
4. Controller調用業務邏輯處理後,返回ModelAndView
5. DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖
6. 視圖負責將結果顯示到客戶端
DispatcherServlet是整個Spring MVC的核心。它負責接收HTTP請求組織協調Spring MVC的各個組成部分。
其主要工作有以下三項:
1. 截獲符合特定格式的URL請求。
2. 初始化DispatcherServlet上下文對應的WebApplicationContext,並將其與業務層、持久化層的WebApplicationContext建立關聯。
3. 初始化Spring MVC的各個組成組件,並裝配到DispatcherServlet中。