SSH 整合Struts+Spring+Hibernate 逐一配置的步骤

SSH 整合Struts+Spring+Hibernate 逐一配置的步骤

本例演示从0开始逐一整合SSH的步骤,要学习本知识,需要具备Spring, Struts, Hibernate的基础,如果没有这些基础,请把基础掌握之后再学习,不要跳跃学习,最后坑的是自己
本例演示从struts,spring,hibernate逐一配置的步骤,完整的可运行实例
必读: 基于框架的程序要成功运行,对于JAR包的版本,配置文件的正确性有着苛刻的要求,任何一个地方出错了,都会导致框架程序运行失败。 如果你是第一次学习本框架,务必严格按照教程的指导,完全模仿操作,直到成功看到运行效果。 第一次成功之后,信心,思路都会有较好的铺垫,然后再根据自己的疑惑,在“成功”的代码上做原本想做的改动和调整,这样可以大大节约学习的时间,提高效率,切勿一来就擅自改动,给自己的学习制造障碍
步骤 1 : 创建数据库
首先准备数据库 how2java
如果没有安装数据库,请参考 安装mysql-server

注: 新安装的数据库账号密码是root:admin, 后续的配置里,也是用的这个账号密码。如果密码不是这个,本知识点右上角的可运行项目跑不起来,所以尽量修改密码为admin, 修改密码办法:修改root密码

步骤 2 :创建表
准备表product_, 有3个字段,分别是
主键id(自增长)
字符串格式的name
浮点数格式的price
建表命令:
use how2java;
  
CREATE TABLE product_ (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(30) ,
  price float ,
  PRIMARY KEY (id)
) DEFAULT CHARSET=UTF8;

步骤 3 : 准备数据
use how2java;
delete from product_;
INSERT INTO product_ VALUES (null,'产品a',88.88);
INSERT INTO product_ VALUES (null,'产品b',88.88);
INSERT INTO product_ VALUES (null,'产品c',88.88);
INSERT INTO product_ VALUES (null,'产品x',88.88);
INSERT INTO product_ VALUES (null,'产品y',88.88);
INSERT INTO product_ VALUES (null,'产品z',88.88);

步骤 4 : 先运行,再学习

SSH整合需要做不少步骤,任何一步部做漏了,做错了,都有可能失败,这样会影响学习的信心,并且误以为本教程是走不通的。
所以先把可运行项目 ssh1导入到eclipse中,启动Tomcat,观察是否正常运行。确定可以运行,确定教程是可以跑得起来的,再学习下面的内容。
项目导入到Eclipse中并运行的办法请参考:导入动态Web项目到Eclipse中
部署成功自后,测试地址,应该看到如图所示的效果

http://127.0.0.1:8080/ssh/listProduct

步骤 5 : 新建项目
在eclipse中新建项目ssh1,使用dynamic web project的方式。 不熟悉这种方式的同学,请参考 使用Dynamic Web Project的方式开发J2EE应用

步骤 6 : 导入jar

把库文件lib复制到 e:/project/ssh/WebContent/WEB-INF/lib目录下
步骤 7 : pojo

1、Product.java

package com.how2java.pojo;
 
public class Product {
 
    private int id;
    private String name;
    private float price;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
     
}

步骤 8 : Product.hbm.xml

1、Product.hbm.xml放到Product.java相同的包下


    
        
            
            

        

        
        
    

     

步骤 9 : DAO

DAO部分由接口ProductDAO 和其实现类ProductDAOImpl 构成
ProductDAO 接口声明了方法list()、add(Product p)。
ProductDAOImpl 类继承了Hibernatetemplete,并实现接口ProductDAO。

1、ProductDAO.java

package com.how2java.dao;
 
import java.util.List;
import com.how2java.pojo.Product;
public interface ProductDAO {
     
    public List list();
    public void add(Product p);
}

2、ProductDAOImpl.java

package com.how2java.dao.impl;
 
import java.util.List;
 
import org.springframework.orm.hibernate3.HibernateTemplate;
 
import com.how2java.dao.ProductDAO;
import com.how2java.pojo.Product;
 
public class ProductDAOImpl extends HibernateTemplate implements ProductDAO{
     
    public List list() {
        return find("from Product");
    }
 
    @Override
    public void add(Product p) {
        save(p);
    }
     
}

步骤 10 : Service
Service部分由接口ProductService 和其实现类ProductServiceImpl 构成
ProductService 接口声明了方法list()。
ProductServiceImpl 实现接口ProductService,并接受productDAO的注入。
list方法就是业务方法,productDAO查找所有的数据,如果是空的,就往数据库里插入5条数据。

1、ProductService.java

package com.how2java.service;
 
import java.util.List;
 
import com.how2java.pojo.Product;
 
public interface ProductService {
     
    public List list();
}

2、ProductServiceImpl.java

package com.how2java.service.impl;
 
import java.util.List;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.how2java.dao.ProductDAO;
import com.how2java.pojo.Product;
import com.how2java.service.ProductService;
 
public class ProductServiceImpl implements ProductService {
    ProductDAO productDAO;
    public List list() {
        List products= productDAO.list();
        if(products.isEmpty()){
            for (int i = 0; i < 5; i++) {
                Product p = new Product();
                p.setName("product " + i);
                productDAO.add(p);
                products.add(p);
            }
        }
        return products;
    }
 
    public ProductDAO getProductDAO() {
        return productDAO;
    }
 
    public void setProductDAO(ProductDAO productDAO) {
        this.productDAO = productDAO;
    }
}

步骤 11 : ProductAction

ProductAction提供对ProductService的注入,借助SSH的整合,ProductAction就充当非常单纯的控制层的角色:
1). 取得数据
2). 跳转到页面 “listJsp”

1、ProductAction.java

package com.how2java.action;
 
import java.util.List;
 
import com.how2java.pojo.Product;
import com.how2java.service.ProductService;
 
public class ProductAction {
 
    ProductService productService;
    List products;
 
    public String list() {
        products = productService.list();
        return "listJsp";
    }
 
    public ProductService getProductService() {
        return productService;
    }
 
    public void setProductService(ProductService productService) {
        this.productService = productService;
    }
 
    public List getProducts() {
        return products;
    }
 
    public void setProducts(List products) {
        this.products = products;
    }
 
}

步骤 12 : struts.xml
指定objectFactory 为spring,把action的生命周期管理交给spring进行


  
   
  
   
  
   
  
    list.jsp
  

   

步骤 13 : applicationContext.xml

applicationContext.xml应该放在WEB-INF目录下,提供action的管理,并且在创建action的时候,注入dao


  
    
        
    
     
    
        
    
    
        
    
 
    
        
        
            
                com/how2java/pojo/Product.hbm.xml
            

        
  
         
            true 
         
                 
        
            
                hibernate.dialect=org.hibernate.dialect.MySQLDialect
                hibernate.show_sql=true
                hbm2ddl.auto=update
            

        
       
         
    
        
        
        
        
          

步骤 14 : 配置web.xml
web.xml 增加Context监听器

             struts2                      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter                              struts2         FORWARD         REQUEST                /*                     org.springframework.web.context.ContextLoaderListener           

步骤 15 : list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8" isELIgnored="false"%>
 
<%@ taglib prefix="s" uri="/struts-tags" %>
 
<%@page isELIgnored="false"%>

                                                                           
idname
${p.id}${p.name}

步骤 16 : 访问http://127.0.0.1/listProduct

部署在Tomcat中,重启tomcat,然后访问地址,观察效果
http://127.0.0.1:8080/ssh/listProduct
部署办法请参考 通过Eclipse启动Tomcat-Run On Server

步骤 17 : 可运行项目
实在自己搞不出来,就导入可运行项目,并和自己的工作比较一下

步骤 18 : 思路图
1.访问路径/listProduct
2. web.xml中的过滤器会将请求交由struts进行处理
3. struts根据listProduct创建对应的productActionBean
此时productActionBean不再由Struts自己创建,而是由Spring创建
4. spring根据applicationContext.xml创建productActionBean对应的对象ProductAction
5. Spring 创建ProductAction的时候 注入Service
6. 创建Service的时候注入DAO
7. Struts 调用ProductAction的list方法
8. 在list方法中调用注入好的dao,访问数据库,查询结果
9. 跳转到list.jsp显示数据

posted @ 2022-05-10 12:31  亚1918  阅读(30)  评论(0编辑  收藏  举报