文章目录

  • ​​一. 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整合思想

SSH三大框架整合_spring

三. 整合struts2和spring框架(把struts2的action交给spring管理)

1. 导入相关jar包

新建项目,并导入相关jar包

SSH三大框架整合_struts_02

  • 包括spring的基本jar包
  • 整合struts框架的jar包
  • 整合web项目的jar包
  • SSH三大框架整合_ssh_03


  • 还有struts2所有的jar包
  • SSH三大框架整合_ssh_04


2. 创建action

SSH三大框架整合_spring_05

3. 创建struts2核心配置文件,配置action

(1). 位置在src下面,名称是struts.xml

在spring配置action对象,在struts.xml中也配置action对象的问题

解决:只需要在spring里面配置action对象,不要在struts.xml中配置

SSH三大框架整合_hibernate_06

4. 配置struts2过滤器

SSH三大框架整合_ssh_07

5. 创建spring配置文件

  • 引入约束

SSH三大框架整合_ssh_08

  • 配置spring监听器
  • SSH三大框架整合_hibernate_09

  • 指定spring配置文件位置
  • SSH三大框架整合_ssh_10

6. 把action交给spring进行配置

SSH三大框架整合_struts_11

SSH三大框架整合_hibernate_12

运行过程理解:

  • 启动服务器,系统加载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包

SSH三大框架整合_hibernate_13


SSH三大框架整合_ssh_14

2. 搭建hibernate环境搭建

(1). 创建实体类

SSH三大框架整合_struts_15

(2). 配置实体类映射关系

SSH三大框架整合_struts_16

(3). 创建核心配置文件

SSH三大框架整合_struts_17

3. 把hibernate核心配置文件中数据库配置,在spring进行配置

把hibernate核心文件中数据库配置去掉了,在spring配置

SSH三大框架整合_hibernate_18

4. 把hibernate的sessionFactory交给spring配置

  • 服务器启动时候,加载spring配置文件,把配置文件中对象创建

  • 把sessionFactory对象创建在spring配置

  • 因为创建sessionFactory代码不是new出来的,而是多行代码实现的
  • SSH三大框架整合_hibernate_19

  • 上图是之前进行测试代码,来创建sessionFactory,如果使用spring的话,上面的com.pudding.utils包可以不要,直接通过spring来创建sessionFactory
  • spring里面针对上面情况,封装类(LocalSessionFactoryBean),配置类对象可以创建sessionFactory
  • SSH三大框架整合_ssh_20


  • SSH三大框架整合_spring_21

<?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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://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对象,并进行直接调用对象的方法进行使用。
  • SSH三大框架整合_hibernate_22


  • SSH三大框架整合_hibernate_23


  • 调用hibernate模板里面save方法添加对象到数据库的操作
  • SSH三大框架整合_spring_24


没有配置事务,做操作时候,出现异常

SSH三大框架整合_hibernate_25

6. 创建service

在service中可以直接获得usedao对象,也是通过spring的注入,通过set方法获得对象。然后也可以直接通过对象.方法名进行方法的调用。

SSH三大框架整合_spring_26


SSH三大框架整合_spring_27


同理:UserAction也可以直接通过spring的注入,set方法获得userService对象,进而通过对象.方法名,直接使用UserService里面的方法。

SSH三大框架整合_struts_28

7. 配置事务

没有配置事务,做操作时候,出现异常

SSH三大框架整合_hibernate_29


一般建议在service上面使用注解

SSH三大框架整合_struts_30

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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://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配置文件在服务器启动时候加载

  • 配置监听器
  • SSH三大框架整合_hibernate_31


  • 指定spring配置文件位置
  • SSH三大框架整合_struts_32


5. 第五步 struts2和spring整合

(1). 把action在spring配置(action多实例的)

SSH三大框架整合_hibernate_33

(2). 在struts.xml中action标签class属性里面写 bean的id值

SSH三大框架整合_spring_34

6. 第六步 spring和hibernate整合

(1). 把hibernate核心配置文件中数据库配置,在spring里面配置

SSH三大框架整合_hibernate_35

(2). 把hibernate的sessionFactory在spring配置

SSH三大框架整合_hibernate_36

7. 第七步 在dao里面使用hibernateTemplate

(1). 在dao注入hibernateTemplate对象

(2). 在hibernateTemplate对象中注入sessionFactory

SSH三大框架整合_ssh_37

8. 第八步 配置事务

SSH三大框架整合_ssh_38


SSH三大框架整合_struts_39

六. Eclipse中SSH其他的整合方式

1. spring整合hibernate时候,可以不写hibernate核心配置文件

  • 把hibernate核心配置文件中,基本信息配置和映射引入都放到spring配置

SSH三大框架整合_struts_40


SSH三大框架整合_struts_41

七. Spring分模块开发
  • 1 在spring里面配置多个内容,造成配置混乱,不利用维护

  • 2 把spring核心配置文件中,一部分配置放到单独的配置文件中,在spring核心配置文件中引入单独配置文件(约束内容必须要有)

SSH三大框架整合_struts_42