(1)Struts主要起控制作用,Spring主要起解耦作用,Hibernate主要起操作數據作用。
(2)Struts2是一個基於MVC設計模式的Web應用框架,在MVC設計模式中Struts2作為控制器(Controller)來建立模型與視圖的數據交互。 Struts 2以WebWork為核心,采用攔截器的機制 來處理用戶的請求,使業務邏輯控制器與Servlet API完全脫離開。
(3)Spring是一個輕量級的控制反轉(IoC)與面向切面(AOP)的容器框架,是輕量的、非侵入的、面向接口編程,由容器控制程序之間的(依賴)關系,當使用IoC一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。依賴注入,即組件之間的依賴關系由容器在運行期決定,即由容器動態的將某種依賴關系注入到組件之中起到的主要作用是解耦。
(4)Hibernate是數據持久化層,是一種新的對象、關系的映射工具,提供了從Java類到數據表的映射,也提供了數據查詢和恢復等機制,大大減少數據訪問的復雜度。把對數據庫的直接操作轉換為對持久對象的操作。
(5)Struts、spring、Hibernate在各層的作用:
<1>struts負責WEB層,ActionFormBean接收網頁中表單提交的數據然后通過Action進行處理,再Forward到對應的網頁,在struts-config.xml中定義<action-mapping>ActionServlet會加載。
<2>Spring負責業務層管理,即Service或Manager。
[1]Service層為action提供統計的調用接口,封裝持久層的DAO。
[2]統一管理javaBean方法。
[3]聲明式事務管理。
[4]集成Hiberante。
<3>Hiberante負責持久化層完成數據庫的CRUD操作,為持久層提供OR-Mapping,它有一組*.hbm.xml文件和POJO是跟數據庫中的表相對應的。
<4>在Struts + Spring + Hibernate中對象的調用流程是jsp->Action->Service->DAO->Hibernate。數據的流向是ActionFormBean接受用戶的數據,Action將數據從ActionFromBean中取出,封裝成VO或PO,再調用業務層的Bean類,完成各種業務處理后再forward。而業務層Bean收到這個PO對象之后會調用DAO接口方法進行持久化操作。