-
SSH框架整合:
一、各框架知识点回顾
在没有其他框架时,单独的框架如何实现,以下伪代码:
持久层(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(); } }
业务层(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框架开发环境
1、创建WEB项目,引入相应jar包(Struts2、Spring、Hibernate框架开发相关)
struts2-convetion-plugin-2.3.15.3.jar---struts2的注解开发的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---连接池数据库驱动包
spring-tx-3.2.0.RELEASE.jar---事务管理
spring-web-3.2.0.RELEASE.jar--整合WEB项目
spring-jdbc-3.2.0.RELEASE.jar--事务管理
spring-orm-3.2.0.RELEASE.jar--整合Hibernate
spring-test-3.2.0.RELEASE.jar--整合Junit单元测试
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、引入相应的配置文件
Struts2框架的配置文件:
web.xml---配置核心过滤器(StrutsPrepareAndExecuteFilter类)
struts.xml---Struts2框架本身的配置文件(在SSH整合中使用纯注解方式时,此文件可省略)
Hibernate框架的配置文件:
hibernate.cfg.xml---核心配置文件(在SSH整合中可省略此文件)
映射文件
Spring框架的配置文件:
web.xml---配置核心监听器(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、创建包结构(action、service、dao、domain)
(一)Struts2整合Spring框架
4、创建页面(WebRoot下新建jsp页面)
部署项目到Tomcat访问本地jsp页面
5、编写Action、Service和Dao
Service层注入Dao
Action中通过整合jar包自动注入,提供Service的set()方法即可
6、配置Action、Service和Dao的类
Service和Dao交给Spring管理,在applicationContext.xml中配置
Struts2和Spring整合的两种方式:
(1)Action的类由Struts2自身去创建;---在struts.xml中配置
(2)Action的类交给Spring框架创建(可以交给Spring的AOP去管理)---配置时手动注入Service(Action创建类是多例,Spring创建类默认是单例模式,所以交由Spring创建时需要设置scope = "prototype")
(二)Spring整合Hibernate框架
7、创建数据库
8、创建映射文件---类和表的对应关系(Hibernate会根据此文件在数据库中创建表结构)
9、Spring整合Hibernate
jdbc.properties属性文件
在applicationContext.xml中配置连接池(ComboPooledDataSource类),引入外部属性文件
在applicationContext.xml中配置Hibernate的相关属性SessionFactory,注入连接池,加载映射文件
10、编写DAO中的代码 extends HibernateSaoSupport 注入SessionFactory
配置DAO时
<bean id = "productDao" class="...ProductDao"> <property name="sessionFactory" ref = "sessionFactory"/> </bean>
在DAO中调用模板完成保存操作
this.getHibernateTemplate().save(product);
11、事务管理
在applicationContext.xml中配置事务管理器(HibernateTransactionManager类),注入sessionFactory,开启注解事务使用<tx:annotation-driven/>标签,引入HibernateTransactionManager的ID,在业务层的类上添加@Transaction注解
三、综合案例
查看全部 -
SSH框架
查看全部 -
配置事务管理器
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> 开启注解事务 <tx:annotation-driven transaction-manager="transactionManager" />
查看全部 -
编写DAO中的代码
查看全部 -
配置Hibernate的相关属性
查看全部 -
Action的类由struts2自身创建
查看全部 -
Service和DAO是如何配置的
直接在applicationContext.xml中进行配置
查看全部 -
Action的类由Struts2自身去创建
查看全部 -
Struts2和spring整合的2种方式
Action的类由Struts2自身去创建
Action的类交给Spring框架创建
查看全部 -
商品管理的Action类
模型驱动使用的类
Struts和Spring整合过程中按名称自动注入的业务层类
查看全部 -
spring的框架的核心监听器
查看全部 -
struts.xml中需要配置那些内容
在src目录下引入struts.xml
查看全部 -
Struts2的框架的核心过滤器的配置
查看全部 -
spring配置文件
查看全部 -
hibernate框架配置文件
查看全部 -
struts2框架的配置文件
查看全部 -
jar包整合2
查看全部 -
jar包整合
查看全部 -
未整合前的代码编写
查看全部 -
action调用service中的方法,service调用dao中的方法
查看全部 -
不使用Struts配置文件在Spring中Action配置需要改为多利即<bean>标签后添加scope属性"prototype"
查看全部 -
SSH框架整合
查看全部 -
Spring整合Hibernate——添加事务管理
步骤十一:事务管理
【a】Spring中配置事务管理器
【b】开启注解事务
【c】事务管理的类上添加注解(业务层上)
查看全部 -
Spring整合Hibernate——编写DAO的代码(此时已经去掉Hibernate的核心配置文件)
步骤十:编写DAO中的代码(完成保存的操作)
原理:没整合前需要在dao的方法里去获得一系列对象以及session对象,但整合之后只需要使用Hibernate的模板即可完成相应操作。正常情况下需要在DAO里进行注入,但是Spring已经提供了一个HibernateSupport类,只需DAO类继承它即可(这个类中已经将HibernateTemplate模板注入,通过getHibernateTemplate()即可获得,还有一个好处,这个类提供了一个setSessionFactory(SessionFactory sessionFactory)方法,当在DAO中直接注入SessionFactory属性时(注意property的name要为sessionFactory,DAO继承了这个类的SessionFactory和set方法),该方法会判断当模板为空时会自动创建模板,所以就不用考虑模板对象了)。
【a】DAO继承HibernateDaoSupport
【b】spring配置文件中给DAO注入SessionFactory属性,属性名为sessionFactory
【c】通过this.getHibernateTemplate().save(对象)记性保存操作
查看全部 -
Spring整合Hibernate——配置去掉Hibernate的配置文件(添加properties文件)
有Hibernate的配置文件时需要配置的属性
步骤1:编写properties文件
步骤2:spring配置文件中通过
<context:property-placeholder location="classpath:jdbc.properties"/>引入properties文件
步骤3:配置连接池(配置c3p0连接池)
步骤4:配置Hibernate相关属性(例如:生成表成略、获取session标签配置、mapping配置)(hibernate-release-5.0.7.Final\project\etc\hibernate.properties可以找到MySQL方言)
查看全部 -
Spring整合Hibernate——创建数据库和映射文件
步骤七
1、创建数据库
2、创建映射文件(约束在Hibernate核心包下org.hibernate.hibernate-mapping.dtd)
查看全部
举报