SSH框架整合

一、SSH框架整合思想

1 框架间两两整合:
	1)struts2与spring 
		要点:struts2的action在spring配置
		
	2)hibernate与spring 
		要点:
		a.把hibernate的sessionFactory交给spring配置
		b.把hibernate数据库配置交给spring配置

整合图示
在这里插入图片描述

整合struts2和spring
要点:把struts2的action交给spring管理

实现步骤:
	第一步 导入ssh的jar包
	第二步 创建action类
	第三步 创建struts2核心配置文件,配置action
		1)位置在src下面,名称是struts.xml
	第四步 配置struts2过滤器
	第五步 创建spring配置文件
		1)引入约束
		2)配置spring监听器
		3)指定spring配置文件位置
	第六步 把action交给spring进行配置(重点!!!)
		问题:在spring配置action对象,在struts.xml中也重复配置了action对象
		解决:只在spring里面配置action对象,不要在struts.xml中配置
整合Spring与hibernate
1 把hibernate核心配置文件中配置数据库信息,把数据库信息在spring进行配置

2 把hibernate里面的sessionFactory创建交给spring管理

实现步骤:
	第一步 导入hibernate的jar包
	第二步 搭建hibernate环境搭建
		1 创建实体类
		2 配置实体类映射关系
		3 创建核心配置文件
	第三步 hibernate核心配置---数据库配置,在spring进行配置
	第四步 把hibernate的sessionFactory交给spring配置
	第五步 在dao里面使用hibernateTemplate
		1)在dao得到hibernateTemplate的对象
		2)调用hibernate模板里面save方法添加
	第六步 配置事务
SSH框架整合过程
第一步 导入jar包
第二步 搭建struts2环境
	1)创建action,创建struts.xml配置文件,配置action
	2)配置struts2的过滤器
第三步 搭建hibernate环境
	1)创建实体类
	2)配置实体类和数据库表映射关系
	3)创建hibernate核心配置文件
		- 引入映射配置文件
第四步 搭建spring环境
	1)创建spring核心配置文件
	2)让spring配置文件在服务器启动时候加载
		- 配置监听器
		- 指定spring配置文件位置
第五步 struts2和spring整合
	1)把action在spring配置(action多实例的)
	2)在struts.xml中action标签class属性里面写 bean的id值
第六步 spring和hibernate整合
	1)把hibernate核心配置文件中数据库配置,在spring里面配置
	2)把hibernate的sessionFactory在spring配置
第七步 在dao里面使用hibernateTemplate
	1)在dao注入hibernateTemplate对象
	2)在hibernateTemplate对象中注入sessionFactory
第八步 配置事务
代码示例:

applicationContext.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:context="http://www.springframework.org/schema/context"
		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/context
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx.xsd">
		
		<!-- 配置连接池 -->
		<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
			<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
			<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/sshmerge"></property>
			<property name="user" value="root"></property>
			<property name="password" value="123456"></property>
		</bean>
		
		<!-- 在spring中创建sessionFactory -->
		<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
			<!-- 指定数据库信息 ,注入连接池-->
			<property name="dataSource" ref="dataSource"></property>
			<!-- 配置要使用的hibernate配置文件位置 -->
			<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
		</bean>
		
		<!-- 创建hibernate模板对象,注入sessionFactory -->
		<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
			<property name="sessionFactory" ref="sessionFactory"></property>
		</bean>
		
		<!-- 配置事务管理器,注入sessionFactory-->
		<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
			<property name="sessionFactory" ref="sessionFactory"></property>
		</bean>
		
		<!-- 开启事务注解扫描 -->
		<tx:annotation-driven transaction-manager="transactionManager"/>
		
		<!-- 配置创建多实例对象action , 注入service -->
		<bean id="sshAction" class="action.SSHAction" scope="prototype">
			<property name="sshService" ref="sshService"></property>
		</bean>
		
		<!-- 创建service,注入dao-->
		<bean id="sshService" class="service.SSHService">
			<property name="sshDao" ref="sshDaoImpl"></property>
		</bean>
		
		<!-- 创建dao实现类对象,注入hibernate模板-->
		<bean id="sshDaoImpl" class="dao.SSHDaoImpl">
			<property name="hibernateTemplate" ref="hibernateTemplate"></property>
		</bean>
			
	</beans>

struts2.xml

<struts>
	<!-- package标签:类似于代码包。  -->
	<package name="aaa" extends="struts-default" namespace="/">
		
		<!-- action标签:配置action访问路径 -->
		<!-- action由spring创建,在全路径上填写spring中创建action的<bean>标签的id值 ,避免重复配置action对象-->
		<action name="add" class="sshAction" method="add">
			<result name="add">/index.jsp</result>
		</action>
	</package>
</struts>

hibernate.cfg.xml

<hibernate-configuration>
	<session-factory>
	<!-- 第一部分: 配置数据库信息 在spring中配置 -->
		
	<!-- 第二部分: 配置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>
		<!-- 配置数据库方言
			让hibernate框架识别不同数据库的自己特有的语句
		 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
	<!-- 第三部分: 把映射文件放到核心配置文件中 必须的-->
		<mapping resource="entity/user.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

实体类配置:

 <hibernate-mapping>
	<class name="entity.User" table="t_user">

		<id name="uid" column="uid">
			<generator class="native"></generator>
		</id>
		
		<property name="username" column="username"></property>
		<property name="password" column="password"></property>

	</class>
 </hibernate-mapping>

Java代码

action类:
 	public class SSHAction extends ActionSupport {
 	
		//在action中定义创建service, 
		private SSHService sshService;
		public void setSshService(SSHService sshService) {
			this.sshService = sshService;
		}
		
		public String add() throws Exception {
	
			System.out.println("add().....");
			sshService.add();
			return "add";
		}
	}
	
service类:
	@Transactional
	public class SSHService {
		private SSHDao sshDao;
		public void setSshDao(SSHDao sshDao) {
			this.sshDao = sshDao;
		}
		
		public void add(){
			System.out.println("service.....");
			sshDao.add();
		}
	}

dao实现类:
	public class SSHDaoImpl implements SSHDao {

		//得到hibernateTemplate
		private HibernateTemplate hibernateTemplate;
		public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
			this.hibernateTemplate = hibernateTemplate;
		}
		
		@Override
		public void add() {
			User user = new User();
			user.setUsername("zhangsan");
			user.setPassword("1234");
			hibernateTemplate.save(user);
		}
	}

二、SSH框架知识点

Hibernate框架
1 hibernate核心配置文件
	(0)orm思想:对象关系映射
	(1)数据库信息
	(2)hibernate信息
	(3)映射配置
	(4)hibernate核心配置文件
2 hibernate映射配置文件
	(1)实体类和数据库表映射关系—使用orm思想
3 hibernate操作的步骤
	(1)在spring框架对hibernate框架进行封装,使用hibernateTemplate
Struts2框架
1 Action操作
	(1)action创建三种方式
		- 继承类 ActionSupport
	(2)配置action访问路径
		- 创建struts.xml配置文件,这个文件名称和位置固定 src下面的
	(3)配置访问action的多个方法
		- 使用通配符方式配置
	(4)在action获取表单提交数据
		- 获取request对象
		** 使用ServletActionContext类获取
		- 属性封装
		- 模型驱动(重点)
		- 表达式封装
	(5)在action操作域对象
		- 使用ServletActionContext获取域对象
	(6)配置struts2的过滤器
2 值栈
	(1)向值栈放数据
		- set方法
		- push方法
		- 定义变量,生成get方法
	(2)从值栈获取数据
		- 在jsp中使用struts2标签+ognl获取
		- <s:property>
		- <s:iterator>
3 拦截器
	(1)aop和责任链模式
	(2)自定义拦截器
		- 继承MethodFilterInterceptor
		- 重写类里面的方法
		- 配置拦截器和action关联
Spring框架
1 spring核心配置文件
	(1)名称和位置没有固定要求
	(2)在spring核心配置文件中引入schema约束
2 创建对象
	(1)xml配置方式:<bean  id=””  class=””  scope=””/>
	(2)注解方式:四个注解
3 注入属性(对象类型属性)
	(1)xml配置方式:
	(2)注解方式:两个注解
		- autowired
		- resource
3 使用ServletContext对象和监听器实现
	(1)在服务器启动时候,加载spring配置文件,创建对象
	(2)配置spring的监听器
	(3)指定spring配置文件位置
4 jdbcTemplate
5 spring事务配置
	(1)xml方式
	(2)注解方式

三、HibernateTemplate介绍

1 HibernateTemplate对hibernate框架进行封装,
直接调用HibernateTemplate里面的方法实现功能

2 HibernateTemplate常用的方法
•	Serializable save(Object entity) :添加操作
•	 void update(Object entity) :修改操作
•	 void delete(Object entity) :删除操作

•	 <T> T get(Class<T> entityClass, Serializable id) :根据id查询
•	 <T> T load(Class<T> entityClass, Serializable id): 根据id查询
•	 List find(String queryString, Object... values) :查询操作的方法
	1)参数1:hql语句
	2)参数2: 语句参数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值