文章目录
- 一. SSH 简单的回顾
- 1. Hibernate框架
- 2. Struts2框架
- 3. Spring框架
- 二. ssh整合思想
- 三. 整合struts2和spring框架(把struts2的action交给spring管理)
- 1. 导入相关jar包
- 2. 创建action
- 3. 创建struts2核心配置文件,配置action
- (1). 位置在src下面,名称是struts.xml
- 4. 配置struts2过滤器
- 5. 创建spring配置文件
- 6. 把action交给spring进行配置
- 四. Spring框架整合hibernate框架
- 1. 导入hibernate的jar包
- 2. 搭建hibernate环境搭建
- (1). 创建实体类
- (2). 配置实体类映射关系
- (3). 创建核心配置文件
- 3. 把hibernate核心配置文件中数据库配置,在spring进行配置
- 4. 把hibernate的sessionFactory交给spring配置
- 5. 在dao里面使用hibernateTemplate
- 6. 创建service
- 7. 配置事务
- 8. 相关代码
- 五. Eclipse中SSH框架整合过程
- 1. 第一步 导入jar包
- 2. 第二步 搭建struts2环境
- 3. 第三步 搭建hibernate环境
- (1). 创建实体类
- (2). 配置实体类和数据库表映射关系
- (3). 创建hibernate核心配置文件
- 4. 第四步 搭建spring环境
- (1). 创建spring核心配置文件
- (2). 让spring配置文件在服务器启动时候加载
- 5. 第五步 struts2和spring整合
- (1). 把action在spring配置(action多实例的)
- (2). 在struts.xml中action标签class属性里面写 bean的id值
- 6. 第六步 spring和hibernate整合
- (1). 把hibernate核心配置文件中数据库配置,在spring里面配置
- (2). 把hibernate的sessionFactory在spring配置
- 7. 第七步 在dao里面使用hibernateTemplate
- (1). 在dao注入hibernateTemplate对象
- (2). 在hibernateTemplate对象中注入sessionFactory
- 8. 第八步 配置事务
- 六. Eclipse中SSH其他的整合方式
- 1. spring整合hibernate时候,可以不写hibernate核心配置文件
- 七. Spring分模块开发
一. SSH 简单的回顾
- struts2
- hibernate5.x
- spring4.x
1. Hibernate框架
2. Struts2框架
3. Spring框架
二. ssh整合思想
三. 整合struts2和spring框架(把struts2的action交给spring管理)
1. 导入相关jar包
新建项目,并导入相关jar包
- 包括spring的基本jar包
- 整合struts框架的jar包
- 整合web项目的jar包
- 还有struts2所有的jar包
2. 创建action
3. 创建struts2核心配置文件,配置action
(1). 位置在src下面,名称是struts.xml
在spring配置action对象,在struts.xml中也配置action对象的问题
解决:只需要在spring里面配置action对象,不要在struts.xml中配置
4. 配置struts2过滤器
5. 创建spring配置文件
- 引入约束
-
配置spring监听器
-
指定spring配置文件位置
6. 把action交给spring进行配置
运行过程理解:
- 启动服务器,系统加载bean1.xml文件,并创建里面的action对象
- 一旦我们访问action的时候,拦截器首先先进行拦截,然后看我们选择的action根据我们访问的路径名字,从struts2.xml文件里面找对应的名字name值,之前是根据class里面的反射创建对象来进行访问,但是现在class里面有个spring传来的对象(这个class会到spring的配置文件bean1.xml里面找对应的id值,进而得到相应的对象),所以也可以直接访问对应的UserAction.java。
四. Spring框架整合hibernate框架
- 1 把hibernate核心配置文件中配置数据库信息,把数据库信息在spring进行配置
- 2 把hibernate里面的sessionFactory创建交给spring管理
1. 导入hibernate的jar包
2. 搭建hibernate环境搭建
(1). 创建实体类
(2). 配置实体类映射关系
(3). 创建核心配置文件
3. 把hibernate核心配置文件中数据库配置,在spring进行配置
把hibernate核心文件中数据库配置去掉了,在spring配置
4. 把hibernate的sessionFactory交给spring配置
-
服务器启动时候,加载spring配置文件,把配置文件中对象创建
-
把sessionFactory对象创建在spring配置
-
因为创建sessionFactory代码不是new出来的,而是多行代码实现的
上图是之前进行测试代码,来创建sessionFactory,如果使用spring的话,上面的com.pudding.utils包可以不要,直接通过spring来创建sessionFactory -
spring里面针对上面情况,封装类(LocalSessionFactoryBean),配置类对象可以创建sessionFactory
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 配置c3p0连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 注入里面的属性值 --><property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_day04?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"></property><property name="user" value="root"></property> <property name="password" value="root"></property> </bean><!-- sessionFactory创建交个spring管理 --><bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><!-- 因为在hibernate核心配置文件中,没有数据库配置,数据库配置在spring里面配置,注入dataSource --><property name="dataSource" ref="dataSource"></property><!-- 指定hibernate核心配置文件 --><property name="configLocations" value="classpath:hibernate.cfg.xml"></property></bean><!-- 配置action的创建 --><bean id="userAction" class="com.pudding.action.UserAction" scope="prototype"></bean></beans>
执行过程:在服务器启动的时候bean1.xml配置文件会被加载,它一加载,里面的对象都会被创建(userAction被创建、sessionFactory对象也会被创建,也就是会连接数据库,并立即生成数据库的表)
5. 在dao里面使用hibernateTemplate
- 在dao得到hibernateTemplate的对象,也就是把hibernateTemplate对象在spring中注入给userDaoImpl,而在userDaoImpl.java类中可以通过set方法获得相应的hibernateTemplate对象,并进行直接调用对象的方法进行使用。
- 调用hibernate模板里面save方法添加对象到数据库的操作
没有配置事务,做操作时候,出现异常
6. 创建service
在service中可以直接获得usedao对象,也是通过spring的注入,通过set方法获得对象。然后也可以直接通过对象.方法名进行方法的调用。
同理:UserAction也可以直接通过spring的注入,set方法获得userService对象,进而通过对象.方法名,直接使用UserService里面的方法。
7. 配置事务
没有配置事务,做操作时候,出现异常
一般建议在service上面使用注解
8. 相关代码
spring的bean1.xml文件代码
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 配置c3p0连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 注入里面的属性值 --><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///spring_day04"></property><property name="user" value="root"></property> <property name="password" value="root"></property> </bean><!-- sessionFactory创建交个spring管理 --><bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><!-- 因为在hibernate核心配置文件中,没有数据库配置,数据库配置在spring里面配置,注入dataSource --><property name="dataSource" ref="dataSource"></property><!-- 指定hibernate核心配置文件 --><property name="configLocations" value="classpath:hibernate.cfg.xml"></property></bean><!-- 第一步配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"><!-- 注入sessionFactory --><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 第二步开启事务注解 --><tx:annotation-driven transaction-manager="transactionManager"/><!-- 配置action的对象 --><bean id="userAction" class="com.pudding.action.UserAction" scope="prototype"><!-- 注入service --><property name="userService" ref="userService"></property></bean><!-- 创建service对象 --><bean id="userService" class="com.pudding.service.UserService"><!-- 注入dao接口 = 实现类的对象--><property name="userDao" ref="userDaoImpl"></property></bean><!-- 创建实现类的对象 --><bean id="userDaoImpl" class="com.pudding.dao.UserDaoImpl"><property name="hibernateTemplate" ref="hibernateTemplate"></property></bean><!-- 创建hibernateTemplate对象 --><bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"><!-- 注入sessionFactory --><property name="sessionFactory" ref="sessionFactory"></property></bean></beans>
hibernate.cfg.xml文件代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration><session-factory><!-- 2. 配置hibernate信息 可选的--><!-- 输出底层sql语句 --><property name="hibernate.show_sql">true</property><!-- 对底层SQL语句进行格式化输出 --><property name="hibernate.format_sql">true</property><!-- hibernate帮创建表,需要配置之后 update:如果已经有了表就帮我们更新,如果没有就创建--><property name="hibernate.hbm2ddl.auto">update</property><!-- 配置数据库方言 在mysql里面实现分页,关键字limit,只能使用mysql里面在Oracle数据库,实现分页rownum让hibernate框架识别不同数据库的特有的语句--><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 3.把映射文件放到核心配置文件中 必须的--><mapping resource="com/pudding/entity/User.hbm.xml"/></session-factory>
</hibernate-configuration>
struts.xml相关代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!-- 配置action的方法访问 --><package name="demo1" extends="struts-default" namespace="/"><!-- class属性里面不写action全路径了(com.pudding.action.UserAction),写了之后action对象创建了两次写spring配置的action的bean的id值--><action name="userAction" class="userAction"></action></package></struts>
五. Eclipse中SSH框架整合过程
1. 第一步 导入jar包
ssh整合jar包
2. 第二步 搭建struts2环境
(1)创建action,创建struts.xml配置文件,配置action
(2)配置struts2的过滤器
3. 第三步 搭建hibernate环境
(1). 创建实体类
(2). 配置实体类和数据库表映射关系
(3). 创建hibernate核心配置文件
- 引入映射配置文件
4. 第四步 搭建spring环境
(1). 创建spring核心配置文件
(2). 让spring配置文件在服务器启动时候加载
- 配置监听器
- 指定spring配置文件位置
5. 第五步 struts2和spring整合
(1). 把action在spring配置(action多实例的)
(2). 在struts.xml中action标签class属性里面写 bean的id值
6. 第六步 spring和hibernate整合
(1). 把hibernate核心配置文件中数据库配置,在spring里面配置
(2). 把hibernate的sessionFactory在spring配置
7. 第七步 在dao里面使用hibernateTemplate
(1). 在dao注入hibernateTemplate对象
(2). 在hibernateTemplate对象中注入sessionFactory
8. 第八步 配置事务
六. Eclipse中SSH其他的整合方式
1. spring整合hibernate时候,可以不写hibernate核心配置文件
- 把hibernate核心配置文件中,基本信息配置和映射引入都放到spring配置
七. Spring分模块开发
-
1 在spring里面配置多个内容,造成配置混乱,不利用维护
-
2 把spring核心配置文件中,一部分配置放到单独的配置文件中,在spring核心配置文件中引入单独配置文件(约束内容必须要有)