整合Struts2+Spring3+Hibernate3三大框架实现淘宝商城

本系统采用SSH(Struts,Spring,Hibernate)框架来开发。SSH框架是目前J2EE领域里最热门而且用得较为成熟的一套开源框架,它是基于MVC设计模式之上,在充分发挥MVC设计模式优点的同时,也创造出了自己的开发特点,降低了应用程序的耦合性,更进一步提高了应用程序的复用性、移植性、灵活性、扩展性和应用性能。SSH是一套轻量级的开发框架,相对于EJB重量级开发框架,SSH在继承了它的优点的同时,在开发和执行效率上都有了相当程度的提高,同时对于开发者而言,它比EJB更容易学习和撑握,开发速度也更快。目前Struts和Spring发展到2.0版本,Hibernate发展到3.0版本,SSH框架也正在不断地进行优化和升级,运行也越来越稳定。

1 软件环境

a)服务器端:

操作系统:Windows NT/2000/2003

网站服务器:Tomcat7.x + jdk1.7.x 

数据库管理系统:MySQL5.x

 

b)用户端: 操作系统:WindowsNT/2000/2003/XP professional/Windows 7/Windows 8/Windows 10


2 Struts、Hibernate和Spring的整合

2.1 Spring整合Hibernate

1、在Spring的配置文件ApplicationContext.xml中配置Hibernate对SessionFactory的设置。如下面的示例代码。


               
               
               
                       
                               org.hibernate.dialect.MySQLDialect
                               true
                               true
                               update
                       
               
               
               
                       
                               cn/shop/user/vo/User.hbm.xml
                       
               


当Spring的IoC容器配置了SessionFactory Bean,它随应用的部署启动而加载,可以利用Spring依赖注入特性将该Bean注入其它Bean。我们由配置文件还可以看出,以声明式的方式管理SessionFactory时,可以让应用在不同数据源间切换,一旦持久层服务发生改变,程序代码不需要改动,只需修改配置文件即可,使得系统的可维护性加强。

2、使用Spring中的HibernateDaosupport和HibernateTemplate类简化Hibernate DAO实现类的编写,完成数据持久化的操作。

3、通过Spring的事务机制进行统一的事务管理。Spring可以采用编程式和声明式两类事务管理。声明式的事务管理更灵活。可以在Spring中使用注解式的声明式事务管理:

        
        
               
        
        
        

2.2 Spring整合Struts2

Spring也提供了MVC模式的支持,但Struts是比较单纯的MVC框架,开发中更倾向Spring和Struts整合开发。

Struts和Spring的整合比较简单顺畅。整合关键点是:将Struts中的Action的实例生成不再由Struts负责,而交给Spring容器管理,主要目的是让控制器与业务逻辑组件实现分离。基于该目的,我们采用工厂模式策略,让Spring容器管理Action,利用IoC的依赖注入特性为控制器注入业务逻辑组件。Struts只单纯扮演控制器的角色。

下面是Spring和Struts整合的关键步骤。

Struts的核心控制器必须能装载Spring的应用程序环境。

Spring和Struts整合有两种方式

1、Struts2的Action由Struts2框架自身创建.

2、Struts2的Action交给Spring框架创建.

我们推荐使用第二种方式,因为第二种方式,Action类由Spring容器进行管理,可以方便的对Action类进行AOP的编程.但第二种有一个关键地方:就是在Struts2框架创建Action类的时候,默认是多例的.而Spring容器在管理类的时候,默认创建是单例的.单例的这种方式就容易产生线程安全问题.所以一定要配置类的scope属性.

在Spring的配置文件中:


在Struts的配置文件中:



2.3 Struts2、Hibernate和Spring的整合开发

将两组整合放在一起进行开发,就可以进行三者的组合开发。在进行三者整合开发时,一般可以采取由上往下和由下往上的分层开发的原则,多数实际项目开发,往往采用后者的开发模式,即:

(1)从底层开发,先开发领域对象,即一些实体类,这些领域对象会在各层之间进行传递,利用Hibernate做好领域对象和数据库表的映射关系。

(2)DAO层的开发。它是专门独立出来对数据进行持久化,即处理数据的CRUD操作,也是利用Spring对Hibernate提供的DAO支持类HibernateDaoSupport来实现的。每个DAO组件对应一个数据库表。

(3)Service层的开发。这层主要是具体业务组件开发,主要用于处理各类业务逻辑,并且能隔离事务和对其他资源调度。

(4)Action层开发。主要是处理Web请求,由Spring进行管理。

2.4 前台分页方法改进

本系统前台采用的分页方法原理是,第一次查询时把所有要查询的数据都从数据库里查询出来,然后把这些数据放到一个session中缓存起来,以后再查询时就从session缓存中去取需要的数据,这种做法的优点在于,只访问一次数据库减少了对数据库服务器的负担,把数据缓存在本地,每次查询速度比去直接访问数据库查询要快得多。采用此种分页方法既减少于数据库的访问,又提高了数据查询速度,可谓是一举两得。

2.5 数据库设计

本系统采用的数据库为Mysql5.0,本系统所有与数据库相关的开发都遵从Mysql5.0数据库开发原则。

3 功能实现

3.1 网站前台功能实现

3.1.1 前台页面效果图

前台首页:

整合Struts2+Spring3+Hibernate3三大框架实现淘宝商城_第1张图片


商品详情页面:

整合Struts2+Spring3+Hibernate3三大框架实现淘宝商城_第2张图片


购物车页面:

 整合Struts2+Spring3+Hibernate3三大框架实现淘宝商城_第3张图片

 

3.1.2 前台部分实现代码

SSH整合中的分页工具类:

publicclass PageHibernateCallback implementsHibernateCallback>{
       
        private String hql;
        private Object[] params;
        private int startIndex;
        private int pageSize;
       
 
        public PageHibernateCallback(String hql,Object[] params,
                       int startIndex, intpageSize) {
               super();
                this.hql= hql;
               this.params = params;
               this.startIndex = startIndex;
               this.pageSize = pageSize;
        }
 
 
 
        public ListdoInHibernate(Session session) throws HibernateException,
                       SQLException {
              
        }
 
}


3.2 网站后台功能实现

3.2.1 后台页面效果图

一级分类管理页面:

 整合Struts2+Spring3+Hibernate3三大框架实现淘宝商城_第4张图片


商品管理页面:

 整合Struts2+Spring3+Hibernate3三大框架实现淘宝商城_第5张图片



3.2.2 后台主要实现代码

后台登录拦截器:

publicclass PrivilegeInterceptor extends MethodFilterInterceptor{
 
        @Override
        protected StringdoIntercept(ActionInvocation actionInvocation) throws Exception {
               // 获得Session中存的后台的用户:
               AdminUser adminExistUser =(AdminUser) ServletActionContext
                               .getRequest().getSession().getAttribute("adminExistUser");
               if(adminExistUser == null){
                       // 没有登录:
                       ActionSupport support =(ActionSupport) actionInvocation.getAction();
                       support.addActionError("您还没有登录!请先去登录!");
                       return support.LOGIN;
               }else{
                       // 已经登录
                       returnactionInvocation.invoke();
               }
              
        }
}


4 总结

以企业实际的系统开发需求为项目背景,遵循Java EE应用软件分层的模型,将系统划分为四个层次,即域模型层、持久层、业务逻辑层和表示层,并且整合了目前企业开发中最流行的开源框架Struts、Hibernate和Spring作为系统的主体架构。Struts框架着重于MVC模式的实现,Hibernate框架完成ORM映射和持久化工作,Spring框架贯穿表示层、业务层、持久层,它主要执行业务逻辑和事务管理,向下整合Hibernate处理数据持久化操作,向上整合Struts处理请求与业务逻辑的调用。三者的整合,提供了一种易扩展、易维护的高性能Web框架模型。

 

 

 


你可能感兴趣的:(Java)