SSH整合案例练习

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"/>
      
    • 在业务层使用事务
      在这里插入图片描述

最后测试代码:
  • 启动服务器
  • 在页面中输入数据
    在这里插入图片描述
  • 成功保存
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值