SSH三大框架整合
原创
©著作权归作者所有:来自51CTO博客作者叮的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
- 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. 相关代码
- 1. 第一步 导入jar包
- 2. 第二步 搭建struts2环境
- 3. 第三步 搭建hibernate环境
- (1). 创建实体类
- (2). 配置实体类和数据库表映射关系
- (3). 创建hibernate核心配置文件
- (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
- 六. Eclipse中SSH其他的整合方式
- 1. spring整合hibernate时候,可以不写hibernate核心配置文件
一. 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配置
<?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对象,并进行直接调用对象的方法进行使用。
- 调用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/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配置文件在服务器启动时候加载
- 配置监听器
- 指定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分模块开发