三大框架的工作原理

碼字猴code_monkey發表於2014-09-28
Hibernate工作原理及為什麼要用?  
原理: 
1.通過Configuration().configure();讀取並解析hibernate.cfg.xml配置檔案 
2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>讀取並解析對映資訊 
3.通過config.buildSessionFactory();//建立SessionFactory 4.sessionFactory.openSession();//開啟Sesssion 5.session.beginTransaction();//建立事務Transation 6.persistent operate持久化操作 
7.session.getTransaction().commit();//提交事務 8.關閉Session  9.關閉SesstionFactory  
為什麼要用: 
1. 對JDBC訪問資料庫的程式碼做了封裝,大大簡化了資料訪問層繁瑣的重複性程式碼。 2. Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作 
3. hibernate使用Java反射機制,而不是位元組碼增強程式來實現透明性。 

4. hibernate的效能非常好,因為它是個輕量級框架。對映的靈活性很出色。它支援各種關聯式資料庫,從一對一到多對多的各種複雜關係。



Spring工作原理及其作用  
    1.springmvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模組負責對請求進行真正的處理工作。  
  2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.   3.DispatcherServlet請請求提交到目標Controller  
  4.Controller進行業務邏輯處理後,會返回一個ModelAndView  
  5.Dispathcher查詢一個或多個ViewResolver檢視解析器,找到ModelAndView物件指定的檢視物件  
6.檢視物件負責渲染返回給客戶端。 
為什麼要使用Spring:  
 
  AOP 讓開發人員可以建立非行為性的關注點,稱為橫切關注點,並將它們插入到應用程式程式碼中。使用 AOP後,公共服務(比如日誌、永續性、事務等)就可以分解成方面並應用到域物件上,同時不會增加域物件的物件模型的複雜性。 
  IOC 允許建立一個可以構造物件的應用環境,然後向這些物件傳遞它們的協作物件。正如單詞 倒置 所表明的,IOC 就像反過來的JNDI。沒有使用一堆抽象工廠、服務定位器、單元素(singleton)和直接構造(straightconstruction),每一個物件都是用其協作物件構造的。因此是由容器管理協作物件(collaborator)。  
 
  Spring即使一個AOP框架,也是一IOC容器。 Spring 最好的地方是它有助於您替換物件。有了Spring,只要用JavaBean屬性和配置檔案加入依賴性(協作物件)。然後可以很容易地在需要時替換具有類似介面的協作物件。



struts1的工作原理 
1.初始化:struts框架的總控制器ActionServlet是一個Servlet,它在web.xml中配置成自動啟動的 
Servlet,在啟動時總控制器會讀取配置檔案(struts-config.xml)的配置資訊,為struts中不同的模組初始化相應的物件。(物件導向思想) 
 
2.傳送請求:使用者提交表單或通過URL向WEB伺服器提交請求,請求的資料用HTTP協議傳給web伺服器。 
3.form填充:struts的總控制器ActionServlet在使用者提交請求時將資料放到對應的form物件中的成員變數中。 
4.派發請求:控制器根據配置資訊物件ActionConfig將請求派發到具體的Action,對應的formBean一併傳給這個Action中的excute()方法。 
 
5.處理業務:Action一般只包含一個excute()方法,它負責執行相應的業務邏輯(呼叫其它的業務模組)完畢後返回一個ActionForward物件。伺服器通ActionForward物件進行轉發工作。 
6.返回響應:Action將業務處理的不同結果返回一個目標響應物件給總控制器。 7.查詢響應:總控制器根據Action處理業務返回的目標響應物件,找到對應的資源物件,一般情況下為jsp頁面。 
8.響應使用者:目標響應物件將結果傳遞給資源物件,將結果展現給使用者。   
Struts2的工作原理 
 
1 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求

2 這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp  
的可選過濾器,這個過濾器對於Struts2和其他框架的整合很有幫助,例如:SiteMesh Plugin)   
3 接著FilterDispatcher被呼叫,FilterDispatcher詢問ActionMapper來決定這個請是否需要呼叫某個Action  
4 如果ActionMapper決定需要呼叫某個Action,FilterDispatcher把請求的處理交給ActionProxy  
5 ActionProxy通過Configuration Manager詢問框架的配置檔案,找到需要呼叫的Action類  
6 ActionProxy建立一個ActionInvocation的例項。  
7 ActionInvocation例項使用命名模式來呼叫,在呼叫Action的過程前後,涉及到相關攔截器(Intercepter)的呼叫。  
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可 能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。在表示的過程中可以使用Struts2 框架中繼承的標籤。在這個過程中需要涉及到ActionMapper


相關文章