-
SSH框架整合:
一、各框架知識(shí)點(diǎn)回顧
在沒有其他框架時(shí),單獨(dú)的框架如何實(shí)現(xiàn),以下偽代碼:
持久層(Hibernate):
public?class?BookDao{ ????public?void?save(Book?book){ ????????Configuration?cfg?=?new?Configuration().configure(); ????????SessionFactory?sf?=?cfg.buildSessionFactory(); ????????Session?session?=?sf.openSession(); ????????Transaction?tx?=?session.beginTransaction(); ????????session.save(book); ????????tx.commit(); ????????session.close(); ????} }
業(yè)務(wù)層(Spring):
public?calss?BookService{ ????private?BookDao?bookDao; ????public?void?setBookDao(BookDao?bookDao){ ????????this.bookDao?=?bookDao; ????} ????public?void?save(Book?book){ ????????bookDao.save(book); ????} }
<bean?id="bookDao"?class?=?"...BookDao"></bean> <bean?id="bookService"?class?=?"...BookService"> ????<property?name?=?"bookDao"?ref="bookDao"/> </bean>
WEB層(Struts2)
public?class?BookAction?extends?ActionSupport?implements?ModelDriven<Book>{ ????private?Book?book?=?new?Book(); ????public?Book?getModel(){ ????????return?book; ????} ????public?String?save(){ ????????WebApplicationContext?wap?=?WebApplicationContextUtils.getWebApplicationContext(...); ????????BookService?bs?=?wap.getBean("bookService"); ????????bs.save(book); ????} }
二、搭建SSH框架開發(fā)環(huán)境
1、創(chuàng)建WEB項(xiàng)目,引入相應(yīng)jar包(Struts2、Spring、Hibernate框架開發(fā)相關(guān))
????struts2-convetion-plugin-2.3.15.3.jar---struts2的注解開發(fā)的jar包
????struts2-spring-plugin-2.3.15.3.jar---struts2用于整合Spring的jar包
????hibernate-distribution-3.6.10.Final\hiernate3.jar
????hibernate-distribution-3.6.10.Final\lib\required\*.jar
????hibernate-distribution-3.6.10.Final\lib\jpa\*.jar
????slf4j-log4j12-1.7.2.jar---整合日志記錄
????com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar---連接池?cái)?shù)據(jù)庫(kù)驅(qū)動(dòng)包
????spring-tx-3.2.0.RELEASE.jar---事務(wù)管理
????spring-web-3.2.0.RELEASE.jar--整合WEB項(xiàng)目
????spring-jdbc-3.2.0.RELEASE.jar--事務(wù)管理
????spring-orm-3.2.0.RELEASE.jar--整合Hibernate
????spring-test-3.2.0.RELEASE.jar--整合Junit單元測(cè)試
? ? IOC需要的jar包:
????????spring-beans-3.2.0.RELEASE.jar
????????spring-context-3.2.0.RELEASE.jar
????????spring-core-3.2.0.RELEASE.jar
????????spring-expression-3.2.0.RELEASE.jar
????????com.springsource.org.apache.log4j-1.2.15.jar---日志記錄的jar包
????????com.springsource.org.apache.commons.logging-1.1.1.jar---日志整合的jar包
? ? AOP需要的jar包:
????????spring-aop-3.2.0.RELEASE.jar
????????spring-aspects-3.2.0.RELEASE.jar
????????com.springsources.org.aopalliance-1.0.0.jar
????????com.springsources.org.aspectj.weaver-1.6.8.RELEASE.jar
2、引入相應(yīng)的配置文件
????Struts2框架的配置文件:
????????web.xml---配置核心過(guò)濾器(StrutsPrepareAndExecuteFilter類)
????????struts.xml---Struts2框架本身的配置文件(在SSH整合中使用純注解方式時(shí),此文件可省略) ????
????Hibernate框架的配置文件:
????????hibernate.cfg.xml---核心配置文件(在SSH整合中可省略此文件)
????????映射文件
????Spring框架的配置文件:
????????web.xml---配置核心監(jiān)聽器(ContextLoaderListener類)
<listener> ????<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>???????? </listener>???????? <context-param>???????????? ???<param-name>contextConfigLocation</param-name>???????????? ???<param-value>classpath:applicationContext.xml</param-value>???????? </context-param>
????????applicationContext.xml---Spring的核心配置文件
????????log4j.properties---日志配置文件
3、創(chuàng)建包結(jié)構(gòu)(action、service、dao、domain)
(一)Struts2整合Spring框架
4、創(chuàng)建頁(yè)面(WebRoot下新建jsp頁(yè)面)
????部署項(xiàng)目到Tomcat訪問本地jsp頁(yè)面
5、編寫Action、Service和Dao
? ? Service層注入Dao
????Action中通過(guò)整合jar包自動(dòng)注入,提供Service的set()方法即可
6、配置Action、Service和Dao的類
????Service和Dao交給Spring管理,在applicationContext.xml中配置
????Struts2和Spring整合的兩種方式:
????(1)Action的類由Struts2自身去創(chuàng)建;---在struts.xml中配置
????(2)Action的類交給Spring框架創(chuàng)建(可以交給Spring的AOP去管理)---配置時(shí)手動(dòng)注入Service(Action創(chuàng)建類是多例,Spring創(chuàng)建類默認(rèn)是單例模式,所以交由Spring創(chuàng)建時(shí)需要設(shè)置scope = "prototype")
(二)Spring整合Hibernate框架
7、創(chuàng)建數(shù)據(jù)庫(kù)
8、創(chuàng)建映射文件---類和表的對(duì)應(yīng)關(guān)系(Hibernate會(huì)根據(jù)此文件在數(shù)據(jù)庫(kù)中創(chuàng)建表結(jié)構(gòu))
9、Spring整合Hibernate
? ? jdbc.properties屬性文件
????在applicationContext.xml中配置連接池(ComboPooledDataSource類),引入外部屬性文件
????在applicationContext.xml中配置Hibernate的相關(guān)屬性SessionFactory,注入連接池,加載映射文件
10、編寫DAO中的代碼? extends HibernateSaoSupport? 注入SessionFactory?
????配置DAO時(shí)
<bean?id?=?"productDao"?class="...ProductDao"> ???<property?name="sessionFactory"?ref?=?"sessionFactory"/> </bean>
????在DAO中調(diào)用模板完成保存操作
????this.getHibernateTemplate().save(product);
11、事務(wù)管理
????在applicationContext.xml中配置事務(wù)管理器(HibernateTransactionManager類),注入sessionFactory,開啟注解事務(wù)使用<tx:annotation-driven/>標(biāo)簽,引入HibernateTransactionManager的ID,在業(yè)務(wù)層的類上添加@Transaction注解
三、綜合案例
查看全部 -
SSH框架
查看全部 -
配置事務(wù)管理器
<bean?id="transactionManager" ??????class="org.springframework.orm.hibernate3.HibernateTransactionManager"> ????<property?name="sessionFactory"> ????????<ref?local="sessionFactory"?/> ????</property> </bean> 開啟注解事務(wù) <tx:annotation-driven?transaction-manager="transactionManager"?/>
查看全部 -
編寫DAO中的代碼
查看全部 -
配置Hibernate的相關(guān)屬性
查看全部 -
Action的類由struts2自身創(chuàng)建
查看全部 -
Service和DAO是如何配置的
直接在applicationContext.xml中進(jìn)行配置
查看全部 -
Action的類由Struts2自身去創(chuàng)建
查看全部 -
Struts2和spring整合的2種方式
Action的類由Struts2自身去創(chuàng)建
Action的類交給Spring框架創(chuàng)建
查看全部 -
商品管理的Action類
模型驅(qū)動(dòng)使用的類
Struts和Spring整合過(guò)程中按名稱自動(dòng)注入的業(yè)務(wù)層類
查看全部 -
spring的框架的核心監(jiān)聽器
查看全部 -
struts.xml中需要配置那些內(nèi)容
在src目錄下引入struts.xml
查看全部 -
Struts2的框架的核心過(guò)濾器的配置
查看全部 -
spring配置文件
查看全部 -
hibernate框架配置文件
查看全部 -
struts2框架的配置文件
查看全部 -
jar包整合2
查看全部 -
jar包整合
查看全部 -
未整合前的代碼編寫
查看全部 -
action調(diào)用service中的方法,service調(diào)用dao中的方法
查看全部 -
不使用Struts配置文件在Spring中Action配置需要改為多利即<bean>標(biāo)簽后添加scope屬性"prototype"
查看全部 -
SSH框架整合
查看全部 -
Spring整合Hibernate——添加事務(wù)管理
步驟十一:事務(wù)管理
【a】Spring中配置事務(wù)管理器
【b】開啟注解事務(wù)
【c】事務(wù)管理的類上添加注解(業(yè)務(wù)層上)
查看全部 -
Spring整合Hibernate——編寫DAO的代碼(此時(shí)已經(jīng)去掉Hibernate的核心配置文件)
步驟十:編寫DAO中的代碼(完成保存的操作)
原理:沒整合前需要在dao的方法里去獲得一系列對(duì)象以及session對(duì)象,但整合之后只需要使用Hibernate的模板即可完成相應(yīng)操作。正常情況下需要在DAO里進(jìn)行注入,但是Spring已經(jīng)提供了一個(gè)HibernateSupport類,只需DAO類繼承它即可(這個(gè)類中已經(jīng)將HibernateTemplate模板注入,通過(guò)getHibernateTemplate()即可獲得,還有一個(gè)好處,這個(gè)類提供了一個(gè)setSessionFactory(SessionFactory sessionFactory)方法,當(dāng)在DAO中直接注入SessionFactory屬性時(shí)(注意property的name要為sessionFactory,DAO繼承了這個(gè)類的SessionFactory和set方法),該方法會(huì)判斷當(dāng)模板為空時(shí)會(huì)自動(dòng)創(chuàng)建模板,所以就不用考慮模板對(duì)象了)。
【a】DAO繼承HibernateDaoSupport
【b】spring配置文件中給DAO注入SessionFactory屬性,屬性名為sessionFactory
【c】通過(guò)this.getHibernateTemplate().save(對(duì)象)記性保存操作
查看全部 -
Spring整合Hibernate——配置去掉Hibernate的配置文件(添加properties文件)
有Hibernate的配置文件時(shí)需要配置的屬性
步驟1:編寫properties文件
步驟2:spring配置文件中通過(guò)
<context:property-placeholder location="classpath:jdbc.properties"/>引入properties文件
步驟3:配置連接池(配置c3p0連接池)
步驟4:配置Hibernate相關(guān)屬性(例如:生成表成略、獲取session標(biāo)簽配置、mapping配置)(hibernate-release-5.0.7.Final\project\etc\hibernate.properties可以找到MySQL方言)
查看全部 -
Spring整合Hibernate——?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)和映射文件
步驟七
1、創(chuàng)建數(shù)據(jù)庫(kù)
2、創(chuàng)建映射文件(約束在Hibernate核心包下org.hibernate.hibernate-mapping.dtd)
查看全部
舉報(bào)