当前位置:首页>>在线学习>>java培训

第十七章 Struts+Spring+Hibernate构建电子商务系统

繁简对译:[]  字体设置:[] 2008-10-16  阅读  次

 

 

第十七章  Struts+Spring+Hibernate构建电子商务系统

      在本章内容中,将以Hibernate Jpetstore为基础,详细介绍在实际的开发过程中,如何综合使用StrutsSpringHibernate这三种技术,对于开发过程中的主要步骤,在接下来的内容中将会详细介绍。

17.1  电子商务简介

      在互联网日益发达的今天,电子商务的应用也得到了日益广泛的应用,例如目前比较知名的电子商务网站卓越、易趣、阿里巴巴等,这些电子商务网站都取得了巨大的成功,消费者也逐渐接收了网上购物的方式,这都促使电子商务应用的快速发展。在本节的内容中,将简单电子商务应用系统的基本知识。

17.1.1  电子商务简介

      电子商务(Electronic Business)就是基于互联网的商业活动,它不仅包括基于互联网的商品服务交易,而且还包括将企业内外部关系转化为创造价值和开发市场的机会,包括通过互联网实现原料采购、产品生产、产品展示、物流、销售等各个生产的环节。电子商务的物理基础包括计算机互联网、金融电子系统、物流配送系统、安全保障系统等,电子商务通过信息流、资金流和物流来实现。可以划分为企业间的电子商务和企业对消费者的电子商务等。

17.1.2  电子商务应用范围

      目前电子商务主要应用于金融、证券、保险、制造业、服务行业以及IT行业等。在这些行业中已经能够很好的通过互联网辅助业务的处理,尤其是在金融证券等行业,电子商务已经涉及的日常工作的每个方面。

17.2  Hibernate Jpetstore简介

      在本章的内容中,将以Hibernate Jpetstore为基础介绍使用StrutsSpringHibernate开发电子商务网站的基本流程,接下来将简单介绍Hibernate Jpetstore的基本情况。

17.2.1  Hibernate Jpetstore简介

      JpetstoreSpring开发包中的一个示例程序,在这个示例程序中采用了StrutsSpringiBatis实现了一个简单的电子商务系统,在Java开发者社区中,使用Hibernate替换了Jpetstore中的持久层iBatis,这个改造以后的项目就是Hibernate Jpetstore系统,Hibernate Jpetstore成为Java开发者社区中的一个开源项目,项目的具体信息可以在https://hjpetstore.dev.java.net/查看。

17.2.2  获取Hibernate Jpetstore示例代码

      Hibernate Jpetstore是一个开源项目,系统的源代码可以在项目的CVS服务器中获取。这个项目使用的开发工具是NetBeans,在本书介绍的内容中,使用的开发工具是Eclipse,这两种工具的工程信息文件是不同的,项目文件组织方式也有所不同,其中Eclipse中的WebRoot目录对应着NetBeans中的Web目录,其他的部分是没有区别的。

17.3  Hibernate Jpetstore系统总体设计

      在本节内容中,将介绍Hibernate Jpetstore系统的总体设计,包括系统功能描述和系统架构的设计。

17.3.1  功能分析

      Hibernate Jpetstore系统是一个宠物商店的示例程序,在这个示例项目中,展示各种类型的宠物,用户可以在查询、浏览系统中提供的宠物,挑选并定购喜欢的宠物。(具体内容请参照书。)

17.3.2  系统整体架构--表示层

      表示层也叫视图层,在Hibernate Jpetstore这个系统中,表示层是用JSPJSTL标签库和Struts实现的。在这个系统中,表示层的文件包括hibernateJpetstore/web/WEB-INF/jsp/struts/ 目录下的所有文件,这个目录下是系统中用到的所有JSP页面,同时hibernateJpetstore/web/index.jsp这个页面是Hibernate Jpetstore这个系统中的前端跳转首页,用户可以通过这个页面跳转到JSP文件所在的目录。(具体内容请参照书。)

17.3.3  系统整体架构--控制层

      控制层出于表示层和数据层之间,它的功能是把表示层和数据层联系起来,降低表示层和数据层的联系。这也正是MVC开发模式中一直强调的一点。在Hibernate Jpetstore中,控制层主要由以下几个部分组成。(具体内容请参照书。)

17.3.4  系统整体架构--数据层

       在这个示例系统中,数据层由以下几部分构成。

       hibernateJpetstore/src/org.springframework/samples/jpetstore/dao/下的所有文件。

       hibernateJpetstore/src/org.springframework/samples/jpetstore/domain/下的所有文件

       hibernateJpetstore/web/WEB-INF/目录下的dataAccessContext-hibernate.xmljdbc.propertiesapplicationContext.xml这三个文件。(具体内容请参照书。)

 

17.4  Hibernate Jpetstore系统数据层设计

      一般来说,数据层设计的好坏直接关系到整个系统的成败。在关系数据库占工业主导地位的今天,不论采用何种数据层技术,必然牵涉到数据库表,以及表与表之间的关系。在本节接下来的内容中,将介绍Hibernate Jpetstore中的数据库设计。

17.4.1  数据库ER

      如图17.4所示就是这个示例系统中的数据库ER图。其中,account描述了用户账号的信息,orders描述了用户订单的信息,lineitem描述了订单中每一项的信息,item描述了宠物的详细信息,supplier描述了供应商的信息,inventory描述了库存信息。

17.4.2  数据库SQL脚本

      完成了数据库关系的设计以后,就需要提供对应的数据库SQL脚本,下面就是这个示例系统中数据库所对应的SQL脚本,通过这些脚本可以创建系统所需要的基本的数据库表结构。(具体内容请参照书。)

17.4.3  Hibernate数据库映射

      Hibernate中,可以把对数据库的操作模拟成对对象的操作,所有的数据库操作都可以通过对象操作实现,在Hibernate中,之所以能实现这样的功能,最关键的部分就是Hibernate可以把数据库的表结构和Java对象映射起来,用Java对象的属性描述数据库表中的字段,用Java对象之间的关系描述数据库表之间的关系,下面以用户表account为例,展示Hibernate中数据库映射的基本方法。(具体内容请参照书。)

17.4.4  DAO调用序列

      Hibernate Jpetstore这个示例项目中,对数据库的操作全都集中在各个DAO中,在程序中可以调用这些DAO进行数据库的操作,(具体内容请参照书。)

17.4.5  DAO接口设计及Hibernate DAO 实现

      对于DAO的实际,一般情况来说,每个DAO都会包含所有的CRUD(即增删改查操作),利用这些基本功能就可以组成各种复杂的数据库操作,但是在实际的开发过程中,除了基本的CRUD以外,为了使用上层的要求,需要根据需求提供更多其他的方法,在这些方法中可以执行比基本CRUD更多的操作。(具体内容请参照书。)

17.5  Hibernate Jpetstore系统控制层设计

      在传统Struts应用中,控制层组件一般情况下指的是Action,而ActionForm只是用来收集表示层的数据,并把这些数据传递给Action。在这个示例程序中,引入了Spring,所以就可以使用Spring的依赖注入、AOP以及声明式的事务管理机制。在本节接下来的内容中,将介绍Spring的这些特性和常规的Struts的功能。

17.5.1  通过Spring AOP实现邮件发送

      Spring AOP的内容在本书的14.3小节中已经做了详细的介绍,在Hibernate Jpetstore这个示例系统中,有两个地方用到了AOP的知识,一个是邮件发送操作中用到,另一个用到AOP的地方是声明式的事务处理,事务处理在接下来的小节中将详细介绍,在这里介绍Hibernate Jpetstore中使用AOP进行邮件发送功能的具体实现方法。(具体内容请参照书。)

17.5.2  Spring的声明式事务管理

      Hibernate Jpetstore这个示例项目中,还有一个地方使用到了AOP的知识,这就是在Spring中的声明式事务管理,在这个示例项目中就使用了Spring中的声明式事务管理机制。在Spring中使用声明式事务管理的方法非常简单,仅仅通过Spring上下文的配置即可。下面就是这个示例项目中的声明式事务管理的具体配置信息。

17.5.3  Struts在控制层的功能

      AcitonStruts的核心组件,它负责这Struts控制层的基本操作,在Action中可以调用业务层或者是DAO完成具体的逻辑操作。在页面上的每一个链接或者是表单都会对应这一个Action,在Struts中每个Action都是org.apache.struts.action.Action的子类,并且需要重写execute()方法,在这个方法中调用业务层或者是DAO来处理用户的请求。

17.6  Hibernate Jpetstore系统表示层设计

      Hibernate Jpetstore这个示例程序中,表示层采用了Struts标签、JSTLJSP页面相结合的处理方法,采用JSTL的原因就是减少JSP页面上的Java代码,而Struts的标签是执行某些Struts操作中必不可少的,在本节内容中,将介绍这个示例程序中表示层的实现方法。

17.6.1  Struts 表示层组件 FormBean

      StrutsFormBean充当了表示层的组件它可以接收用户的表单输入并且把表单的内容传递给Action处理FormBean和我们熟悉的JavaBean非常类似不同之处在于这些FormBean都需要继承org.apache.struts.action.ActionForm这个类而且在需要的时候还得重写其中的validate()reset()方法。

17.6.2  FormBean 类层次

      Aciton中的BaseAction类似,FormBean也提供了一个基类,所有的FormBean只需要实现BaseActionForm这个基类的指定约束,既可以复用这个基类中的功能。这个基类ActionForm的具体代码如下。

17.6.3  JSP+JSTL+Struts标签库实现信息展示

      Hibernate Jpetstore中,使用传统的JSP表态包含指令,来包含进公共部分,如页眉,页脚及导航区域等。所有以 Include 前缀命名的JSP都用来被其他JSP页面包含的页面块。在这个示例程序中,所有的页面结构如下所示。

17.6.4  Struts中防止重复提交

      Struts中可以采用事务Token来放置用户表单的重复提交,在Hibernate Jpetstore这个示例系统中,用户提交订单的例子中就使用了事务Token来放置用户的重复提交。在这个用户提交表单的时候,要把用户输入的表单展示在确认页面中,如果点 'Continue' 按钮,才会将订单插入到数据库中,在这个处理过程中采用事务Token来避免用户的重复提交。

17.7  小结

      在本章中,以Hibernate Jpetstore为基础介绍了综合使用StrutsSpringhibernate进行电子商务网站开发的基本方法。在这个示例项目中,不仅综合使用了这三种技术,而且还使用了其他的技术,在这个章节中仅仅是通过这个示例程序说明开发电子商务应用系统的基本方法,读者可以通过这个项目仔细揣摩,也可以到Hibernate Jpetstore项目的官方网站https://hjpetstore.dev.java.net/查看关于这个项目更多的信息。

 

打印 收藏 关闭