SSH框架的传统的整合方式:
(仅仅是S2SH框架的整合,每个框架的具体使用将发布在其他篇)
Struts2 spring hibernate的jar包
1). Struts2框架
* 在web.xml中配置核心的过滤器
* 在src目录下创建struts.xml,用来配置Action
2). Hibernate框架
* 在src目录创建hibernate.cfg.xml配置文件
* 在JavaBean所在的包下映射的配置文件
3). Spring框架
* 在web.xml配置整合WEB的监听器
* 在src目录下创建applicationContext.xml
* 在src目录下log4j.proerties
web.xml中的配置:
xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Demo_sshdisplay-name>
<filter>
<filter-name>OpenSessionInViewFilterfilter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilterfilter-class>
filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<filter>
<filter-name>struts2filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class>
filter>
<filter-mapping>
<filter-name>struts2filter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:applicationContext.xmlparam-value>
context-param>
<welcome-file-list>
<welcome-file>index.jspwelcome-file>
welcome-file-list>
web-app>
整合Struts2框架:
整合Struts2框架的主要问题是:Action由谁创建的问题:
第一种:Action由Struts2创建
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>
<package name="demo" namespace="/" extends="struts-default">
<action name="userDemo_*" class="com.demo.web.action.UserDemoAction" method="{1}" >
action>
package>
struts>
第二种:Action由spring创建:
在spring配置文件中加入bean
Struts2的配置文件要做更改:
struts.xml中的修改,把全路径修改成ID值 *
* 第二种方式需要有两个注意的地方
* Spring框架默认生成CustomerAction是单例的,而Struts2框架是多例的。所以需要配置 scope="prototype"
* CustomerService现在必须自己手动注入了
整合hibernate框架:
整合hibernate框架的主要问题是sessionFactory放在哪个配置文件
第一种:带有hibernate.cfg.xml的配置文件。强调:不能加绑定当前线程的配置
1. 编写CustomerDaoImpl的代码,加入配置并且在CustomerServiceImpl中完成注入
2. 编写映射的配置文件,并且在hibernate.cfg.xml的配置文件中引入映射的配置文件
3. 在applicationContext.xml的配置文件,配置加载hibernate.cfg.xml的配置
4. 在CustomerDaoImpl中想完成数据的添加,Spring框架提供了一个HibernateDaoSupport的工具类,以后DAO都可以继承该类!!
public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {
public void save(Customer c) {
System.out.println("持久层...");
this.getHibernateTemplate().save(c);
}
}
第二种:不带hibernate.cfg.xml配置文件的方式。
1. Hibernate配置文件中
* 数据库连接基本参数(4大参数)
* Hibernate相关的属性
* 连接池
* 映射文件
2. 开始进行配置
在Spring的配置文件中配置
* 先配置连接池相关的信息
* 修改 LocalSessionFactoryBean 的属性配置,因为已经没有了hibernate.cfg.xml的配置文件,所以需要修改该配置,注入连接池
* 继续在 LocalSessionFactoryBean 中配置,使用hibernateProperties属性继续来配置其他的属性,注意值是properties属性文件
Hibernate模板类的常用方法:
1. 增删改的操作:
* 添加:
* save(Object obj);
* 修改:
* update(Object obj);
* 删除:
* delete(Object obj);
2. 查询的操作:
* 查询一条记录:
* Object get(Class c,Serializable id);
* Object load(Class c,Serializable id);
3. 查询多条记录:
* List find(String hql,Object... args);
Spring配置文件: