SSH框架整合-慕课课程

SSH框架整合-慕课课程

学习时间:2018年12月3日
慕课链接: 基于SSH实现员工管理系统之框架整合篇
内容:Struts2+Hibernate+Spring框架整合,分为Struts2整合Spring和Spring整合Hibernate两步进行
源码: Github:SSH_Base

一、开发环境搭建

1. jar 包导入

2. 引入相关配置文件

  • web.xml-->Struts2 过滤器配置

    
          
              struts
              org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
          
          
              struts
              /*
         
  • struts2.xml -->src

    >struts-2.3.36-all.zip\struts-2.3.36\apps\struts2-blank-2.3.36.war\WEB-INF\classes\struts2.xml
    
  • web.xml -->Spring 核心监听器

    > ContextLoaderListener--> ContextLoader --> 105:contextConfigLocation
    
      
               org.springframework.web.context.ContextLoaderListener
      
      
              contextConfigLocation
              classpath:applicationContext.xml
      
  • applicationContext.xml

3. 创建包结构和实体


- 包结构:
    - com.ssh.action
    - com.ssh.dao-
    - com.ssh.domain - 实体 product
    - com.ssh.service

二、Struts2整合Spring

1. 页面创建

  • 使用struts2标签 布局页面

    
商品名称:
商品价格:

2. 编写Action,Service,Dao的类

  • com.ssh.action

    ProductAction //商品管理的Action
    public class ProductAction extends ActionSupport implements ModelDriven{
        //^extends ActionSupport implements ModelDriven (模型驱动的接口)
        //模型驱动使用的类
        private Product product = new Product();
        @Override
        public Product getModel() {
            // TODO Auto-generated method stub
            return product;
        }
        /*注入Service  struts2-spring-plugin-2.3.36.jar > struts-plugin.xml > struts.objectFactory
                >struts.objectFactory.spring.autoWire = name 自动装配*/    
        /*Struts 和Spring 整合过程中按名字自动注入业务层的类*/
        private ProductService productService;
    
        public void setProductService(ProductService productService) {
            this.productService = productService;
        }
    }
  • com.ssh.dao

    ProductDao //商品管理的DAO
  • com.ssh.domain

    实体 product
  • com.ssh.service

    ProductService //商品管理的业务层
    //业务层 注入Dao的类
    private ProductDao productDao;
    
    public void setProductDao(ProductDao productDao) {
        this.productDao = productDao;
    }    

3. 配置Action,Service,Dao的类

  • aplicationContext.xml 配置业务层的类 *

    
    
        
    
    
    
    
    
  • Struts2和Spring整合的两种方式

    • (1) Action 类由Struts2 自身创建

      • struts2.xml————>

        • 在applicationContext.xml中配置Service DAO 两个标签(上一步*)
    • (2)actio 类交给Spring创建

      
        
              
              
      
      
          
          
      
  • Action中执行的方法

三、Sprinng整合 Hibernate

1. 创建数据库

  • create database myssh

2. 创建映射文件 以及Spring中的配置

  • /ssh/src/com/epoint/ssh/domain/Product.hbm.xml

    --> /org/hibernate/hibernate-mapping-3.0.dtd
    
    
    
            
                
                    
                 
                
                
            
        
  • applicationContext.xml

    
     
    
    
        
        
        
        
    
    
    
        
        
        
        
            
                org.hibernate.dialect.MySQLDialect
                true
                true
                update    
            
        
        
        
            
                com/epoint/ssh/domain/Product.hbm.xml
            
        
    

3. 编写DAO的代码

  • 注入SessionFactory:

    • 在 Dao 上extends HibernateDaoSupport
    • 配置applicationContext中的Dao
    
        
            
  • 在Dao中调用模板完成保存操作

    this.getHibernateTemplate().save(product)     
    

4. 添加事务管理



    


    


5.问题

  • 错误1: Causedby:java.lang.ClassNotFoundException:com.mchange.v2.c3p0.ComboPooledDataSource

    解决:
    1.导入c3p0-0.9.2.1.jar和mchange-commons-java-0.2.3.4.jar(有的导入就解决,有的还会报错,报错的看第二步)
    2.对于 中的class不能直接复制粘贴,要通过“提示”敲出来,如果直接复制或者不按提示敲出来可能还会继续报同样的错误
  • 错误2:Loading class 'com.mysql.jdbc.Driver'. This is deprecated.

    解决:
    com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver
  • 错误3:MYSQL:WARN: Establishing SSL connection without server's identity verification is not recommended.

    解决:
    jdbc:mysql://localhost:3306/test?useSSL=false
  • 错误4: java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)

    解决:
    参考: java.sql.SQLException

你可能感兴趣的:(spring,struts2,ssh,hibernate)