struts 控制用的 hibernate 操作數(shù)據(jù)庫的 spring 用解耦的 Struts 、 spring 、 Hibernate 在各層的作用 1 ) struts 負(fù)責(zé) web 層 . ActionFormBean 接收網(wǎng)頁中表單提交的數(shù)據(jù),然后通過 Action 進(jìn)行處理,再 Forward 到對(duì)應(yīng)的網(wǎng)頁。 在 struts-config.xml 中定義 <action-mapping>, ActionServlet 會(huì)加載。 2 ) spring 負(fù)責(zé)業(yè)務(wù)層管理,即 Service (或 Manager). 1 . service 為 action 提供統(tǒng)計(jì)的調(diào)用接口,封裝持久層的 DAO. 2 .可以寫一些自己的業(yè)務(wù)方法。 3 .統(tǒng)一的 javabean 管理方法 4 .聲明式事務(wù)管理 5. 集成 Hiberante 3 ) Hiberante ,負(fù)責(zé)持久化層,完成數(shù)據(jù)庫的 crud 操作 hibernate 為持久層,提供 OR/Mapping 。 它有一組 .hbm.xml 文件和 POJO, 是跟數(shù)據(jù)庫中的表相對(duì)應(yīng)的。然后定義 DAO ,這些是跟數(shù)據(jù)庫打交道的類,它們會(huì)使用 PO 。 在 struts+spring+hibernate 的系統(tǒng)中, 對(duì)象的調(diào)用流程是: jsp-> Action - > Service ->DAO ->Hibernate 。 數(shù)據(jù)的流向是 ActionFormBean 接受用戶的數(shù)據(jù), Action 將數(shù)據(jù)從 ActionFromBean 中取出,封裝成 VO 或 PO, 再調(diào)用業(yè)務(wù)層的 Bean 類,完成各種業(yè)務(wù)處理后再 forward 。而業(yè)務(wù)層 Bean 收到這個(gè) PO 對(duì)象之后,會(huì)調(diào)用 DAO 接口方法,進(jìn)行持久化操作。
spring:Aop管理事務(wù)控制,IoC管理各個(gè)組件的耦合,DaoTemplate作為常規(guī)持久層的快速開發(fā)模板! struts:控制層Action,頁面標(biāo)簽和Model數(shù)據(jù),調(diào)用業(yè)務(wù)層 Hibernate:負(fù)責(zé)數(shù)據(jù)庫和對(duì)象的映射,負(fù)責(zé)DAO層(Data Access Object:數(shù)據(jù)訪問)
spring整合hibernate和struts,只要在配好了applicationContext.xml,在struts的action中直接調(diào)用就可以了。hibernate訪問數(shù)據(jù)庫的操作都在spring中實(shí)現(xiàn)了,spring的調(diào)用又在stuts的action中實(shí)現(xiàn)了。這個(gè)ssh框架就連到了一起……
一個(gè)簡單的SSH例子 配置文件 /SSHLoginDemo/WebRoot/WEB-INF/struts-config.xml 代碼
/SSHLoginDemo/src/applicationContext.xml 代碼
前端頁面 /SSHLoginDemo/WebRoot/login.jsp 代碼
struts /SSHLoginDemo/src/com/qdu/sun/struts/action/LoginAction.java 代碼
/SSHLoginDemo/src/com/qdu/sun/struts/form/LoginForm.java
代碼
spring /SSHLoginDemo/src/com/qdu/sun/BO/LoginBO.java 代碼
hibernate /SSHLoginDemo/src/com/qdu/sun/hibernate/UserDAO.java 代碼
|
|