SSH三大框架整合

文章目录

一. 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/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&amp;serverTimezone=UTC&amp;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分模块开发

  • 1 在spring里面配置多个内容,造成配置混乱,不利用维护

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

在这里插入图片描述

  • 9
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值