Hibernate框架
(1)orm思想
对象关系映射
(1)数据库信息
(2)hibernate信息
(3)映射配置
(4)hibernate核心配置文件
如果单纯使用hibernate框架,核心配置文件名称hibernate.cfg.xml和位置src下面 固定的。
hibernate和spring整合时候,hibernate核心配置文件名称和位置没有固定要求。
2 hibernate映射配置文件
(1)实体类和数据库表映射关系---使用orm思想
3 hibernate操作的步骤
(1)在spring框架对hibernate框架进行封装,使用hibernateTemplate
Struts2框架
1 Action操作
(1)action创建三种方式
继承类 Actction
(2)配置action访问路径
创建struts.xml配置文件,这个文件名称和位置固定src下面
(3)配置访问action的多个方法,
使用通配符方式配置
(4)在action获取表单提交数据
获取request对象
使用ServletActionContext类获取
属性封装
模型驱动(重点)
表达式封装
(5)在action操作域对象
使用ServletActionContext获取域对象
(6)配置struts2过滤器
2 值栈
(1)向值栈放数据
(2)set方法
(3)push方法
定义变量,生成get方法
(2)从值栈获取数据
在jsp中使用strust2标签+ognl获取
<s:property>
<s:iterator>
3 拦截器
(1)aop和责任链模式
(2)自定义拦截器
继承MethodFilterInterceptor
重写类里面的方法
配置拦截器和action关联
Spring框架
1 spring 核心配置文件
(1)名称和位置没有固定要求
(2)在spring核心配置文件中引入schema约束
2 创建对象
(1)xml配置方式:<bean id="" class=""/>
(2)注解方式,四个注解
3 注入属性(对象类型属性)
(1)xml配置方式
(2)注解方式:两个注解
-autoWired
-resource
4 使用ServletContext对象和监听器实现
(1)在服务器启动时候,加载spring配置文件,创建对象
(2)配置spring的监听器
(3)指定spring配置文件位置
5 jdbcTemplate
6 spring事务配置
(1)xml方式
(2)注解方式
整合struts2和spring框架
1 把struts2的action交给spring管理
2 实现过程
第一步 导入struts2的jar包,有时候有jar包冲突
(1)导入用于整合的jar包
struts2-spring-plugin-2.3.24.jar
第二步 创建action
第三步 创建struts2核心配置文件,配置action
<package name="demo1" extends="struts-default" namespace="/">
<!-- class属性里面不写action的全路径,因为写,action对象创建两次
写spring配置的action的bean的id值 -->
<action name="userAction" class="userAction"></action>
</package>
(1)位置在src下面,名称是struts.xml
第四步 配置struts2过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第五步 导入spring的jar包
第六步 创建spring配置文件
(1)引入约束
(2)配置spring监听器
web.xml <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(3)指定spring配置文件位置
web.xml <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:bean1.xml</param-value>
</context-param>
第七步 把action交给spring进行配置(***)
(1)在spring配置action对象,在struts.xml中也配置action对象
(2)解决:
只需要在spring里面配置action对象,不用再struts.xml中配置
bean1.xml <!-- 配置action对象 -->
<bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype"></bean>
ssh整合(spring整合hibernate)
具体实现
第一步 导入hibernate的jar包
(1)导入struts2和hibernate的jar包时候有jar冲突问题
在struts2里面有jar包
javassist-3.11.0GA.jar
在hibernate里面有jar包
javassist-3.18.1-GA.jar
删除低版本的jar包
(2)导入spring整合持久层框架需要导入jar包
第二步 单间hibernate环境搭建
1 创建实体类
2 配置实体类映射关系
3 创建核心配置文件
第三步 把hibernate核心配置文件数据库配置,在spring进行配置
(1)把hibernate核心文件中数据库配置去掉,在spring配置
<!-- 配置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?useUnicode=true&characterEncoding=utf8"></property>
<property name="user" value="root"></property>
<property name="password" value=""></property>
</bean>
第四步 把hibernate的sessionFactory交给spring配置
(1)服务器启动时,加载配置文件,把配置文件中对象创建,
(2)把sessionFactory对象创建在spring配置
(3)因为创建sessionFactory代码不是new出来的,而是多行代码实现的
cfg=new Configuration().configure();
sessionFactory=cfg.buildSessionFactory();
(4)spring里面针对上面情况,封装类,配置类对象可以创建sessionFactory
<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>
第五步 在dao里面使用hibernateTemplate
Hibernate5.0 org.springframework.orm.hibernate5.HibernateTemplate
(1)在dao得到hibernateTemplate的对象
<bean id="userDaoImpl" class="cn.itcast.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>
最后通过http://localhost:8080/spring_day04sshdemo/userAction.action对项目进行访问,在t_user表中成功插入一条数据。
userAction.java
package cn.itcast.action;
import com.opensymphony.xwork2.ActionSupport;
import cn.itcast.service.UserService;
public class UserAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService;
public void setUserService(UserService userService) {
this.userService=userService;
}
@Override
public String execute() throws Exception {
System.out.println("action.....");
userService.add();
return NONE;
}
}
userService.java
package cn.itcast.service;
import org.springframework.transaction.annotation.Transactional;
import cn.itcast.dao.UserDao;
import cn.itcast.dao.UserDaoImpl;
@Transactional
public class UserService {
//注入dao对象
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add() {
System.out.println("service....");
//UserDao dao=new UserDaoImpl();
userDao.add();
}
}
UserDaoImpl.java
package cn.itcast.dao;
import org.springframework.orm.hibernate5.HibernateTemplate;
import cn.itcast.entity.User;
public class UserDaoImpl implements UserDao {
//得到hibernateTemplate对象
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public void add() {
User user=new User();
user.setUsername("宫本");
user.setAddress("日本");
// hibernateTemplate对hibernate进行封装
/* HibernateTemplate hibernateTemplate=new HibernateTemplate();
hibernateTemplate.save(entity);*/
//调用save方法实现添加
hibernateTemplate.save(user);
}
}
项目将上传到资源。