本文介绍一下网络商店的开发所需要的开发工具和架构。
基本配置
开发本例需要的开发工具。
·开发平台:Eclipse 3.1。
·Web服务器:Tomcat 5。
·开发技术:JSP,Struts框架,Hibernate技术,JSTL。
·数据库服务器: MySQL5.0。
系统需求
大部分读者都有过在网上购物的经历,在购物网站可以很方便的注册、浏览商品、查询商品、购买时也只需点几下鼠标。本章的网络商店实现了上述的基本功能,用户可以在网络商店中进行注册、浏览商品以及查询购物车。下面来讲解每个系统功能。
1.登录和注册
用户登录和注册就是实现一个新的用户注册和老用户的登陆,这两个功能基本上每个电子商务网站上提供。用户注册就是新用户可以在网络商店进行信息注册,这是购物的前提。用户必需先注册才能进行购物。注册时系统会对注册信息进行验证,以确保注册信息的正确性。用户登录就是用户可以在登陆页面进行登陆,在购物结帐时,用户需要登陆信息,当然在进入系统开始的时,用户可以进行登陆。登陆时,如果用户名密码错误,系统会提示错误。
2.商品浏览
商品浏览是实现用户可以在网络商店中随意浏览商品,商品是根据商品的类别来进行分类的,用户可以单击每一个分类的链接来进入每一个分类,查看的详细信息。进入每一个商品类别之后,商品是根据每个产品的类型再分类的。
例如,进入书这个大的类别,书有可以分很多种,如计算机相关的书,管理方面相关的书。用户根据每一个产品链接来进入每一个产品系列。例如单击进入计算机相关的书,进入之后,列举的就是每一个商品。单击每一个商品就可以看到每一个商品的具体信息,例如单击计算机程序设计艺术,就可以看到这本书的出版日期,价格,书的大概内容。如果觉得这本书很合适,就可以把它放进购物车。
3.结帐
在结帐的时候,系统会显示用户购物车中已有的商品,包括产品名、产品数量、单价、总的价格以及是否有库存。在最后确定订单时,用户可以修改每一个商品的数量。例如计算机程序设计与艺术想买2本,则用户可以修改它的购买数量,更新购物车就可以。如果用户不想买这本书了,就可以把这本书从购物车中消除。但是一旦单击了结帐生成订单,则购物车就不能被改变了。
根据上面大概的需求,画出网络商店的用例图,如图1所示。
图1 用例图
系统功能描述
在本节中,将以最直观的方式来向读者介绍整个系统要实现的功能。
1、用户注册
用户注册是网络商店的基本功能之一。用户如果想从网络商店购买商品,必须有一个网络商店的账号。用户可以通过注册获得账号。注册页面效果如图2所示。
当注册成功之后,会进入到网络商店的首页。此时已经以新的帐号登录了网络商店,系统页面的首页如图3所示。在注册时,系统会对注册信息作一些简单的验证,如果信息格式不对,则注册会失败,系统会提示失败的原因,注册失败如图4所示。
图2 注册页面
图3 注册成功
2、用户登录
当用户已经拥有一个账号,就可以进行登录。当用户登录系统首页时,可以点击登陆链接尽心登录。登录页面如图5所示。如果登录成功,则返回到系统的首页,如果登录失败则会转入到失败页面,如图6所示。
图4注册失败
图5 登录页面
用户成功登录后,在系统的右上角有一个链接,单击进入可以修改跟人信息,如图7所示。
图6 登录失败
图7 修改个人信息
3、浏览商品
用户成功登录后就可以浏览网路商店中的商品了。在首页有几种商品品种可以供用户选择的,如电子商品、书籍以及软件。例如,用户单击软件,进入软件商品的浏览,软件商品下面分为Microsoft和kingsoft,如图8所示。
进入某一个商品品种后,系统会列出这个商品品种下的所有商品系列,每一商品系列又有很多具体的商品,例如用户单击Microsoft,如图9所示。
图8浏览商品
图9浏览具体商品
在图9的页面中列出的是一个一个具体的商品,用户可以单击每一个商品名,以查看这个商品的具体信息。例如单击anti spy,如图10所示。
4、购物
当用户浏览商品时,看中了一个商品,就可以把这个商品放到自己购物车中。每一个商品都有一个链接提供放入购物车。单击放入购物车,如图11所示。
图10 商品具体信息
图11 查看购物车
在查看购物车页面中有很多供选择的操作,如删除一个购物车。当用户单击删除,如图12所示,系统还是会跳转到购物车页面。如果用户觉得某一个商品的数量不合适,用户可以更改该商品的数量,在数量这一栏中填上要购买的数量,然后单击更新购物车,如图13所示。
图12 删除一个商品
图13 更改商品的数量
5、结帐
查看购物车之后,如果用户想进行结帐可以单击结帐链接,如图14所示。单击下一步链接,就可以查看该订单的详细情况,如图15所示
图14 结帐
图15 订单详细信息
查看订单详细后,然后单击下一步链接,就是订单的确认了,如图16所示
订单确认完毕之后,就是订单的生成了。如果单击下一步链接,生成订单,此时订单不能在被修改了。如图17所示。
图16确认订单
图17订单生成
系统设计
在对系统的需求进行了分析以后,接下来开始对系统的整体架构进行设计。本章的重点在于讲述如何进行开发,而不是在于如何进行设计。因此,在设计这一部分只是简单进行了介绍,目的是为了使读者更容易理解整个系统。
1、系统架构设计
整个应用程序遵循多层次的架构模式,从上到下依次为视图层、控制器层、模型层、持久化层和数据库层,如图18所示。前面三层其实就是Struts框架的基本基本层次。持久化层则是Hibernate来创建的。
图18系统架构
其中,模型层、持久化层、数据库层之间的关系是上层依赖下一层,而下一层对上一层的依赖很少,如同网络的ISO七层模型。各层次间的依赖关系应该是自顶向下的,即上层可以依赖下层,而下层应该尽量减少对上层的依赖。
例如,此时在系统中使用Hibernate来实现持久化层,若要采用其他机制实现持久化层时,则不需要改动业务逻辑中的代码。而视图层和控制器层都是通过Struts框架来实现的。模型层实际上又可细分为数据访问层(DAO)和数据服务层(Manager)。持久化层是使用Hibernate实现的,在这层使用了DAO模式,所以这层又可分为数据访问层和数据服务层。
2、业务实体设计
一个系统的业务实体在内存中表现为实体域对象,在数据库中表现为关系数据,实现业务实体包括以下内容。
·设计域模型,创建域模型实体对象。
·设计关系数据模型。
·创建对象—关系映射文件。
在网络商店中有以下的业务实体:用户、具体商品、商品系类、商品类、订单、订单项、购物车和购物车中具体的商品。下面对这些业务实体作一个简单的解释,后面章节会有详细的解释。
·用户:代表一个用户实体,主要包括用户的详细信息,如用户名,密码,地址之类的。
·具体商品:代表每一个具体的商品信息,如上面提到的计算机程序设计艺术,主要包括商品的名字,价格等。
·商品系类:代表一系类商品,如前面提到计算机相关书籍。
·商品类别:代表一类商品,如前面提到的书。
·订单:代表用户的订单,主要包括订单名,用户信息,订单的具体内容。
·订单项:代表订单中具体项,一个订单项包括一个商品的购买情况。
·购物车:代表用户的购物车,是一个虚拟的概念。
·购物车中的具体商品:代表购物车中每一个具体的购物项。
这些实体之间的关系如图19所示。
图19 业务实体关系图
如图19所示,这里来介绍一下各实体之间的对应关系。
·用户和订单:一个用户可以拥有多个订单,一个订单只能属于一个用户,他们之间的关系是一对多的关系。在数据库表中是表现为订单表中有一个用户表的外键,在Hibernate中则表现为订单持久化类中有一个用户持久化类引用。
·订单与订单项:一个订单中可以有很多订单项,一个订单项只是对一个具体商品的封装。订单与订单项的关系在Hibernate中表现为一个订单项中有一个订单的持久化类引用。
·订单项与商品:一个订单项就是对商品的封装,一个商品就是这个商品的详细信息,订单项中除了有这个商品的信息,还有这个商品的购买数量,属于哪个订单等。
·商品系列与商品:一个商品系列有多个商品,如同计算机方面书籍与计算机程序设计艺术关系。
·商品类别与商品系列,一个商品类别有多个商品系列,如同书与计算机方面书籍的关系。
·购物车与购物商品,用户的购物车中可以有多个购物商品,由于是网上购物,也许购物车中把一个没有库存的商品放到了购物车中,所以购物商品就必须有这个信息。
·购物商品与商品,这个关系同订单项与商品的关系类似,只是购物商品对商品的封装角度不一样,购物商品中除了要记录商品的数量还需记录它的库存情况。
以上是系统中所有实体域模型之间的关系的定义。
3、业务逻辑设计
在本系统中,应用的持久化层采用Hibernate做为中间件,并使用了DAO设计模式实现对数据层的访问。DAO模式是J2EE核心模式中的一种,其主要的行为就是在业务核心方法和具体数据源之间再增加一层,用这一层来连接业务方法和数据源,这样就实现了两者的解耦。
因为具体持久层数据源可能是多样化的,可能是XML或者是关系数据库。在具体的关系数据库中,也可能是不同的产品,如Oracle或者MySQL。通过使用DAO模式,业务核心部分就不用关心数据层是如何实现对数据库的操作的,而只关心自己的业务操作,对数据库的操作全部仍给了DAO代理,如图20所示。
图20 DAO模式 |