http://www.cnblogs.com/hoobey/p/5512924.html
?
?
?
struts ? --- ?控制器
hibernate ? 操作數據庫
spring ? ? ? ?解耦
Struts 、 spring 、 Hibernate 在各層的作用
1 ) struts 負責 web 層 .
ActionFormBean 接收網頁中表單提交的數據,然后通過 Action 進行處理,再 Forward 到對應的網頁。
在 struts-config.xml(struts1的配置文件,Struts.xml 是Struts2的) 中定義 <action-mapping>, ActionServlet 會加載。
2 ) spring 負責業務層管理,即 Service (或 Manager).
1 . service 為 action 提供統計的調用接口,封裝持久層的 DAO.
2 .可以寫一些自己的業務方法。
3 .統一的 javabean 管理方法
4 .聲明式事務管理
5. 集成 Hiberante
?
3 ) Hiberante ,負責持久化層,完成數據庫的 crud(增刪改查) 操作
hibernate 為持久層,提供 OR/Mapping 。
它有一組 .hbm.xml 文件和 POJO(類), 是跟數據庫中的表相對應的。然后定義 DAO ,這些是跟數據庫打交道的類,它們會使用 PO 。
?
在 struts+spring+hibernate 的系統中,
對象的調用流程是: jsp-> Action - > Service ->DAO ->Hibernate 。
數據的流向是 ActionFormBean 接受用戶的數據, Action 將數據從 ActionFromBean 中取出,封裝成 VO 或 PO,
再調用業務層的 Bean 類,完成各種業務處理后再 forward 。而業務層 Bean 收到這個 PO 對象之后,會調用 DAO 接口方法,進行持久化操作。
? ?--
spring:Aop管理事務控制,IoC管理各個組件的耦合,DaoTemplate作為常規持久層的快速開發模板!?
struts:控制層Action,頁面標簽和Model數據,調用業務層?
Hibernate:負責數據庫和對象的映射,負責DAO層(Data Access Object:數據訪問)?
?
spring整合hibernate和struts,只要在配好了applicationContext.xml,在struts的action中直接調用就可以了。hibernate訪問數據庫的操作都在spring中實現了,spring的調用又在stuts的action中實現了。這個ssh框架就連到了一起……
一個簡單的SSH例子
配置文件
/SSHLoginDemo/WebRoot/WEB-INF/struts.xml
代碼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm"
type="com.qdu.sun.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="loginForm" input="/login.jsp"
name="loginForm" path="/login" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="success" path="/success.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>
</action-mappings>
<message-resources
parameter="com.qdu.sun.struts.ApplicationResources" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
?