一、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: 语句参数值

被折叠的 条评论
为什么被折叠?



