Struts2,Spring,Hibernate框架综合练习
第一步,创建web项目,导入jar包
- struts2的jar包
- struts2-convention-plugin-2.3.24.jar (Struts2的注解开发包)
- struts2-json-plugin-2.3.24.jar(Struts2的整合AJAX的开发包)
- struts2-spring-plugin-2.3.24.jar(Struts2的整合Spring的开发包)
- Hibernate的jar包
- MySQL驱动jar包
- 日志记录jar包
- C3P0连接池jar包
- Spring的jar包
第二部,引入相关的配置文件
- web.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>
-
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> <!-- 配置Struts2的常量 --> <constant name="struts.action.extension" value="action"/> <!-- 配置Action --> <package name="ssh1" extends="struts-default" namespace="/"> <action name="customer_*" class="com.itheima.ssh.web.action.CustomerAction" method="{1}"> </action> </package> </struts>
-
applicationContext.xml
-
日志记录
- log4j.properties
第三步,创建相应的包结构,还有类结构
第四步:引入相关的页面
第五步:Spring整合Struts2
-
编写action
public class CustomerAction extends ActionSupport implements ModelDriven<Customer> { //模型驱动使用的对象 private Customer customer = new Customer(); @Override public Customer getModel() { // TODO Auto-generated method stub return customer; } public String save(){ System.out.println("Action.save()执行了"); return NONE; } }
-
配置Action
-
将service交给spring管理
<bean id = "customerService" class = "com.itheima.ssh.service.impl.CustomerServiceImpl"> </bean>
-
在Action中引入Service
public String save(){ System.out.println("Action.save()执行了"); ApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); CustomerService cs = (CustomerService) classPathXmlApplicationContext.getBean("customerService"); cs.save(customer); return NONE; }
-
在service中编写方法:
public void save(Customer c){ System.out.println("CustomerServiceImpl.save()执行了"+c); }
第六步,测试程序的通顺
-
直接运行action
Action.save()执行了 CustomerServiceImpl.save()执行了com.itheima.ssh.domain.Customer@1eb350
-
service方法顺利执行,通过
第七部,编写Dao,将Dao交给spring,在service注入Dao
-
在Dao中加入save方法
public void save(Customer c) { // TODO Auto-generated method stub System.out.println("CustomerDaoImpl.save()"+c); }
-
在applicationContext中配置Dao
<bean id = "customerService" class = "com.itheima.ssh.service.impl.CustomerServiceImpl"> <property name="customerDao" ref = "customerDao"></property> </bean> <bean id = "customerDao" class = "com.itheima.ssh.dao.impl.CustomerDaoImpl"> </bean>
-
在service中调用Dao,然后测试:
-
测试通顺
第八步,Spring整合Hibernate框架
-
创建数据库和表
Create database ssh1; Use ssh1; CREATE TABLE `cst_customer` ( `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)', `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源', `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业', `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别', `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话', `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话', PRIMARY KEY (`cust_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-
在applicationContext.xml中引入Hibernate配置信息
<!-- 在spring中整合Hibernate --> <bean id = "sessionFactory" class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 配置Hibernate配置文件 --> <property name="configLocation" value = "classpath:hibernate.cfg.xml"></property> </bean>
-
在Spring和Hibernate整合后,Spring提供了一个Hibernate的模板类简化Hibernate开发
-
改写DAO继承HibernateDaoSupport
-
在applicationContext.xml中为Dao注入sessionFactory属性
<bean id = "customerDao" class = "com.itheima.ssh.dao.impl.CustomerDaoImpl"> <property name = "sessionFactory" ref = "sessionFactory"></property> </bean>
-
在DAO中使用Hibernate的模板完成保存操作
public void save(Customer c) { // TODO Auto-generated method stub System.out.println("CustomerDaoImpl.save()"+c); this.getHibernateTemplate().save(c); }
第九步:配置Spring的事务管理
-
在applicationContext.xml中配置事务管理器
<bean id = "transactionManager" class = "org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref = "sessionFactory"></property> </bean>
-
开启注解事务
<tx:annotation-driven transaction-manager="transactionManager"/>
-
在业务层使用事务
-
最后测试代码:
- 启动服务器
- 在页面中输入数据
- 成功保存