宠物商店电子商务系统分析与设计_第1页
宠物商店电子商务系统分析与设计_第2页
宠物商店电子商务系统分析与设计_第3页
宠物商店电子商务系统分析与设计_第4页
宠物商店电子商务系统分析与设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子商务系统分析与计 大作业20112012学年第1学期大作业题目:宠物商店电子商务系统分析与设计 学生姓名: 学 号: 专 业: 班 级: 指导老师: 完成日期: 2012年 1月 6日目录一、系统开发背景1二、系统规划11、总体目标12、电子商务系统的可行性分析2三、系统分析51、业务流程分析52、数据流程分析6四、系统设计81、电子商务系统的总体架构设计8(1)系统功能模块8(2)电子商务系统基础设施的设计与选择9(3)电子商务系统总体功能及详细设计12(4)代码设计282、数据库设计34(1)系统er图34(2)数据库表设计35(3)ipo设计(输入、处理、输出)39五、课程设计总结3

2、9参考文献4141一、系统开发背景随着信息技术的高速发展,对互联网技术的应用越来越广泛,互联网已经成为现在社会中不可或缺的一部分。由于社会经济的发展,人们放在工作上的时间逐渐增多,去商场购物的时间相对减少,如何能够方便快捷地购买到所需要的商品,已经成为人们关注的重心。为了满足人们的需求,电子商务平台系统应运而生了。电子商务平台系统是一个j2ee企业级的大型网络应用程序,主要划分为用户功能、商品功能、订单功能、管理员功能五个功能模块。商品功能和订单功能是本系统的两大重要功能模块。人们可以通过商品功能模块中的商品查询这一功能,对所需商品的详细信息进行查看,并且通过订单功能模块中的订单填写这一功能在

3、网上购买这些商品。真正实现了不用走出家门,就可以买到所需商品的梦想。本课题是以项目宠物商店为基础,详细阐述了宠物商店软件设计、开发的全过程,并对技术难点做出分析,提出解决方法。使“宠物商店系统”最终具有数据维护、数据检索和数据处理的功能。前台采用基于b/s的结构,从而快捷方便的实现了系统的开发。此外,本系统将面向切面技术作为研究重点,重点在于分析系统的各种逻辑设计,并对面向切面(aop)做出一定的阐述,并实现对aop技术简单应用本系统主要功能模块有:l 数据维护:实现新建、修改、删除、存储功能。l 数据检索:实现按不同要求分类模糊查询,组合查询功能。l 数据处理:根据查询方式不同,选择输出检索

4、信息。二、系统规划1、总体目标网上宠物商店面向消费者和商家,商家通过网上宠物商店展示并销售自己的商品,消费者通过网上宠物商店选购称心如意的商品。通过对网上宠物商店用户需求的分析把用户需求概括为如下几个部分:用户信息管理、用户购物管理、管理员商品管理、订单管理、报表查看、站内短信息等。2、电子商务系统的可行性分析l aop技术可以说是oop(objectorientedprogramming,面向对象编程)的补充和完善。oop引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,oop则显得无能为力。也就是说,oop允许你定义从

5、上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在oop设计中,它导致了大量代码的重复,而不利于各个模块的重用。而aop技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系

6、统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。aop代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹。使用“横切”技术,aop把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。aop的作用在于分离系

7、统中的各种关注点,将核心关注点和横切关注点分离开来。正如avanade公司的高级方案构架师adammagee所说,aop的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。”实现aop的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。然而殊途同归,实现aop的技术特性却是相同的,分别为:joinpoint(连接点):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现aop时,并不需要去定

8、义一个joinpoint。pointcut(切入点):本质上是一个捕获连接点的结构。在aop中,可以定义一个pointcut,来捕获相关方法的调用。advice(通知):是pointcut的执行代码,是执行“方面”的具体逻辑。aspect(方面):pointcut和advice结合起来就是aspect,它类似于oop中定义的一个类,但它代表的更多是对象间横向的关系。introduce(引入):为对象引入附加的方法或属性,从而达到修改对象结构的目的。上述的技术特性组成了基本的aop技术,大多数aop工具均实现了这些技术。它们也可以是研究aop技术的基本术语。l struts技术web应用基本上都

9、是代表共同理念的关键组件。通常,开发团队需要在有限的时间里创建应用,然而它们不得不正确的构建,并能持续构建它。软件开发者开始一个项目时,首先也应该构思软件应用的框架,规划软件模块,并定义这些模块之间的接口和关系。javaweb开发人员已经有一些工具可用来建立表现层,比如javaserverpages和veloctity模板。也有一些机制来处理数据库,如jdbc和enterprisejavabeans(ejbs)。但有了这些的同时就要有“东风”来将它们集合在一起。这“东风”就是struts。框架可以提高软件开发的速度和效率,并且使软件更便于维护。l mvc技术mvc(model/view/con

10、troller),mvc原来是建立smalltalk应用的框架。框架支持代表应用状态、屏幕表现和控制流的3个类,分别叫做model,view,和controller。如图2-1mvc模型结构图modelviewcontroller图2-1mvc模型结构图smalltalkmvc方案使用观察者通知模式。在这种模式下,每个视图注册为一个模型数据的观察者。然后模型可以通过发送消息给所有这册观察者,通知它们相关的改变。其为smalltalkmvc框架已经通用化了,他也可以应用它其他平台上面。l spring技术spring是一个开源框架,它由rodjohnson创建。它是为了解决企业应用开发的复杂性而

11、创建的。spring使用基本的javabean来完成以前只可能由ejb完成的事情。然而,spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何java应用都可以从spring中受益。目的:解决企业应用开发的复杂性。功能:使用基本的javabean代替ejb,并提供了更多的企业应用功能。范围:任何java应用。简单来说,spring是一个轻量级的控制反转(ioc)和面向切面(aop)的容器框架。轻量从大小与开销两方面而言spring都是轻量的。完整的spring框架可以在一个大小只有1mb多的jar文件里发布。并且spring所需的处理开销也是微不足道的。此外,sp

12、ring是非侵入式的:典型地,spring应用中的对象不依赖于spring的特定类。控制反转spring通过一种称作控制反转(ioc)的技术促进了松耦合。当应用了ioc,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为ioc与jndi相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不

13、负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。容器spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,spring不应该被混同于传统的重量级的ejb容器,它们经常是庞大与笨重的,难以使用。框架spring可以将简单的组件配置、组合成为复杂的应用。在spring中,应用对象被声明式地组合,典型地是在一个xml文件里。spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻

14、辑的开发留给了你。所有spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为spring中的各种模块提供了基础支持。三、系统分析1、业务流程分析2、数据流程分析本系统的主要内容有,用户登录,注册,商品浏览,购买商品,查看订单,提交订单,修改个人信息。用户进入系统,可以无需登录即可浏览商品,检索商品。在选中目标商品后,将其放入购物车中,并可提交生成订单。当点击提交时,如果用户尚未登录,将跳转到用户登录页面令其登录,如果用户已登录,则产生相应信息令用户填写,用户填写其信息,单击生成订单,在查看订单无误后,提交订单。图3.1为本系统的高层数据流程图。图3.1系统数据流图图

15、图3.2系统用例图四、系统设计1、电子商务系统的总体架构设计网上宠物商店面向消费者和商家,商家通过网上宠物商店展示并销售自己的商品,消费者通过网上宠物商店选购称心如意的商品。通过对网上宠物商店用户需求的分析把用户需求概括为如下几个部分:用户信息管理、用户购物管理、管理员商品管理、订单管理、报表查看、站内短信息等。(1)系统功能模块系统功能主要包括用户信息管理、在线购物、订单管理、站内信、查询商品信息、商品信息管理、首页信息管理和报表查看等。各个功能模块还有各自的子模块。系统的功能模块图如图4.1所示。图4.1软件系统体系结构(2)电子商务系统基础设施的设计与选择电子商务系统网络结构设计系统页面

16、分为两个部分,用户操作页面和管理员操作页面。用户操作页面的迁移如图4.3所示。用户操作主要包括个人信息管理页面、商品购买等页面、站内信管理页面、订单管理页面等。当用户登录网上宠物商店后,可以通过用户菜单页面访问到各个不同功能中的各页面。管理员操作页面的迁移如图4.2所示。模块名称对外接口名用户信息管理user站内信message用户购物管理product订单管理order管理员后台管理报表管理reportuser:用户信息管理模块对外的接口,与该接口相关的模块有:站内信、用户购物管理、订单管理、管理员后台管理。message:站内信模块对外的接口,与该接口相关的模块有:用户信息管理,管理员后台

17、管理product:用户购物管理模块对外的接口,与该接口相关的模块有:订单管理,管理员后台管理order:订单管理模块对外的接口,与该接口相关的模块有:管理员后台管理,报表管理report:报表管理模块对外的接口,与该接口相关的模块有:管理员后台管理。电子商务系统平台的选择与设计l 主机类型数据库服务器:intelpentium4cpu2.8ghz512mram前台客户端:安装浏览器的pc机l 网络类型:互联网l 存贮器容量:数据库服务器:80g以上;客户端:无特殊要求l 其他特殊设备:打印机:惠普laserjetp1007(cc365a)l 支撑软件1.操作系统:windows2000以上2

18、.数据库管理系统:mysql5.03.应用服务器:tomcat等支持servlet&jsp的应用服务器(3)电子商务系统总体功能及详细设计电子商务系统总体功能设计系统分析与设计过程首先根据业务用例和业务活动图进行聚类,聚类活动在系统分析时开始。聚类活动是个连续的过程,需要不断地进行丰富和完善,需要按照面向对象设计的思想,划分出子系统类,并为类添加应该具有的方法或属性,以及这些方法或属性的可见性,这些可以通过设计类图来描述。系统设计的任务就是要依据系统分析文档资料,采用正确的方法,确定系统功能模块在计算机内应该用那些程序组成,它们之间用什么方式连接在一起,以构成一个最好的系统结构。l 功

19、能需求概述网上宠物商店面向消费者和商家,商家通过网上宠物商店展示并销售自己的商品,消费者通过网上宠物商店选购称心如意的商品。通过对网上宠物商店用户需求的分析把用户需求概括为如下几个部分:用户信息管理、用户购物管理、管理员商品管理、订单管理、报表查看、站内短信息等。网上宠物商店的系统结构图如图所示。网上购物商城用户信息管理用户购物管理网站后台页面定制管理员商品管理订单管理报表查看站内短信息网上宠物商店系统结构图各部分需求描述如表所示。系统特性描述系统特性名称系统特性描述优先级用户信息管理管理用户信息,包括管理员信息和普通用户信息。具体功能包括:管理员登陆,用户的注册、登陆,密码找回、用户信息、密

20、码修改修改,用户信息包括用户的email、购物时需要的收货人信息、联系电话等中用户购物管理网上宠物商店的核心部分,主要功能有商品的浏览、搜索、查看,用户购物车管理、用户收藏信息管理,商品的评论、评分高管理员商品管理管理员对商品信息的管理,商品信息包括商品名称、价格、品牌等与用户购买相关的信息,也包括是否显示在首页、是否是热销商品等与网站管理相关的信息高订单管理网上宠物商店的核心部分,订单同时由用户和管理员进行管理。订单的状态包括未处理、已处理、已取消三个状态。其中订单处于未处理状态时用户可以修改订单的商品信息和收获人信息,订单状态变化后无法修改高管理员后台页面定制对网上宠物商店首页信息的定制,

21、可以修改首页中显示的广告图片、公告内容等信息,也可以修改显示在首页中的商品中报表查看管理员可以查看出售状况统计,统计以图表的形式查看,可以导出到本地文件中站内短信息用户之间以及用户与客户服务联系的通道,类似与常用的电子邮件,但是只用于网上宠物商店内部。低l 系统功能模块系统功能主要包括用户信息管理、在线购物、订单管理、站内信、查询商品信息、商品信息管理、首页信息管理和报表查看等。各个功能模块还有各自的子模块。系统的功能模块图如图所示。l 系统逻辑结构应用程序分为四层,视图层、控制层、逻辑层和持久层,视图层与控制层之间的信息传递通过容器和dwrservlet处理,系统逻辑结构如图所示。系统逻辑结

22、构电子商务系统详细功能设计l 用户信息管理1.功能描述管理用户信息,包括管理员信息和普通用户信息。具体功能包括:管理员登陆,用户的注册、登陆,密码找回、用户信息、密码修改修改,用户信息包括用户的email、购物时需要的收货人信息、联系电话等,本功能的页面信息流动图。登陆页面是否登陆注册页面用户信息页面信息修改页面提交或返回注册成功直接注册是否用户信息管理业面流动图2.需求规格分析用户信息管理部分需求规格分析如表所示。用户信息管理需求规格分析表功能编号功能名称功能描述1登陆提供用户登陆功能,用于标识当前用户身份,是用户购物的前提。2注册提供用户注册功能。3信息修改修改用户的注册信息4密码修改修改

23、用户的登陆密码5密码找回提供用户密码找回功能,用户忘记密码时可以找回密码3.功能详述(1)登陆当用户购买商品时,需要对用户做出判断,如果用户尚未登录,则应跳转到登录页面进行登录,填写登录时所需的信息,提交之后系统会判断用户信息,首先判断数据库中是否存在该用户,如果存在在判断密码是否有效,如果有效,则进入主页面,开始购物或查看个人信息。(2)注册当用户第一次登录本系统时,需要填写用户的基本信息,当点击注册按钮时,系统会检查注册必要的信息是否全部填写,检验各项长度是否和否,检验注册用户名是否已存在,密码和二次密码输入是否相同,当满足全部条件时,用户信息被注册到数据库中。(3)密码找回当用户忘记密码

24、时,首先需要填写用户名,系统会判断用户名是否存在,根据用户名询问密码提示问题,用户填写密码提示问题,系统判断提示问题答案的正确性。如果正确,将令用户重新设置密码。设置完成之后,系统会对用户填写信息进行校验。校验通过之后更改数据库中相应记录。(4)修改个人密码。当用户重新设置密码时,进入帐户管理页面,填写新密码和二次密码,并可以对密码提示问题和答案进行更改。填写完成后系统会对填写的数据进行判断,并更爱数据库记录。(5)个人信息修改用户可以填写并修改自己的个人信息包括地址,年龄等详细信息。填写必要的信息之后,系统会对填写的数据做出校验,并修改数据库的相应记录。l 站内信1.功能描述用于用户间,用户

25、和商户间的信息交流,同时管理员可通过站内信向用户发布公告消息,订单的最新处理结果也通过站内信提醒。本功能的页面信息流动图。站内信页面信息流动图2.需求规格分析站内信部分需求规格分析如表所示。站内信需求规格表功能编号功能名称功能描述1写信息可对相应用户留写信息2收件箱快速查看所接收到的信息,并显示主题和时间3回收站存储用户删除的信息,防止用户误操作的发生4信息删除删除信息3.功能详述(1)写信息登陆后可以通过用户菜单可以打开写信息页面,填写收件人账号信息和信息详细信息,系统会检测用户输入数据的合法性和完整性,如通过验证则信息创建成功;否则给出相应提示。(2)收件箱用户收到的信息列表,用户登陆后点

26、击用户菜单的收件箱即可查看信息。(3)回收站用户删除的短信息暂时存储在这里,防止用户误操作造成的数据丢失。l 订单管理1.功能描述确定订购商品之后填写接收者相关信息,生成订单,等待订单处理结。业务流图如图所示。订单管理业务流图2.需求规格分析订单管理部分需求规格分析如表所示。订单功能需求规格表功能编号功能名称功能描述1新建订单用户确定购买选定商品的凭证。2用户订单列表查看自己已下订单,可对未处理订单进行修改、删除3管理员订单列表管理员可以查看接收到的订单列表,可以处理订单,修改订单状态、删除已完成订单等操作3.功能详述(1)新建订单用户查看购物车页面,确认购买的商品,点击下一步之后,令用户填写

27、送货地址信息,如果用户在个人信息设置时设置了送货地址信息,则送货地址信息将采用默认的设置,否则由用户自行设置,之后,用户判断商品信息和送货地址是否正确,在确定正确无误之后,提交订单,系统会向数据库中增加订单信息,和订单条目信息,修改对应商品的库存量。(2)用户订单列表用户登陆后点击查看订单菜单,系统会先检验用户是否登陆,如未登陆则提示用户未登陆,不做操作。如果已登陆则由用户选择查看的订单的状态,提交后查询订单,并显示在订单列表中。(3)管理员订单列表管理员登陆后点击查看订单菜单,系统会先检验用户是否登陆,如未登陆则提示用户未登陆,不做操作。如果已登陆则由管理员选择查看的订单的状态,提交后查询订

28、单,并显示在订单列表中。管理员查看的是全部订单。l 报表查看1.功能描述查看日报表、月报表,季度报表;报表导出到文件,报表信息包括:总销售额、分类商品销售额以及一些数据图信息等。业务流图如图所示。报表查看业务流图2.需求规格分析报表查看部分需求规格分析如表所示。报表查看需求规格表功能编号功能名称功能描述1报表查看管理员选择想要查看的报表类型,然后输入想要查看的日期或月份,系统计算出统计数据显示在报表中,同时生成数据的图形信息2报表导出报表页面显示后,可以导出报表到本地文件3.功能详述管理员登陆后,可以查看报表。系统首先查看用户是否登陆且是否具有管理员权限,如果检验失败则给出无法操作提示,否则继

29、续。管理员可以查看不同的时间的报表和并按照不同的方式显示报表,选择后服务器会根据管理员的选择生成报表,报表生成后管理员可以选择导出文件把报表导出到本地。其数据流图如图所示。报表查看数据流图l 用户购物管理1.功能描述用户购物管理面向网站的注册用户,主要包括了用户在购物过程中需要的各种功能,注册用户可以进行浏览商品,添加商品到购物车、商品收藏,购物车、商品收藏信息查看、删除和修改,确认购物信息填写用户收货人信息。其中添加商品到购物车、商品收藏,购物车、商品收藏信息查看、删除和修改等功能需要用户登录为前提。用户购物管理的业务流图如图所示。用户购物管理业务流图2.需求规格分析订单管理部分需求规格分析

30、如表所示。订单管理需求规格表功能编号功能名称功能描述1商品浏览用户浏览商城中的商品,可以分类查看,也可以对商品进行搜索2商品收藏管理用户可以把喜爱的商品添加到自己的收藏夹,方便用户随时查看,同时用户可以管理自己收藏夹的收藏内容,也可以在收藏夹中快速的添加商品到购物车3用户购物车管理管理用户已选择要购买的商品,用户可以添加新商品、修改已选商品数量、删除已选商品等4商品评论与评分用于记录某商品的销售情况和用户评价,用户购买商品后可以评价3.功能详述(1)商品浏览按照不同的方式对商品进行浏览,比如:分类查看,商品搜索等。浏览商品时可以实现拖拽商品到购物车,也可以通过点击购买按钮购买商品。由于大多数情

31、况下用户不会只选择一个商品,因此这时不跳转到购物车页面,而是在页面中给出提示:商品添加成功,并有跳转到购物车的链接。(2)用户收藏首先判断用户是否登陆,如果已经登陆,则判断用户是否已经收藏过该商品,如果用户没有收藏该商品则收藏成功,否则收藏失败。用户收藏的商品可以直接添加到购物车中,用户可以删除商品收藏。用户收藏的数据流图类似于添加到购物车(3)购物车信息管理购物车信息管理主要是对用户购物车的管理,用户可以修改购买商品的数量、删除已购买的商品、继续购买商品定,在确定购物时填写订单,进入订单管理模块。在用户修改商品数量时需要注意商品数量是否充足。(4)商品评论与评分用户必须购买过该商品才可以进行

32、商品评论和评分。商品评论时首先检验用户是否具有评论权限,如果有评论权限则显示评论界面,否则不显示评论界面;商品评分需要用户操作后再进行权限的判断。商品评论与商品评分功能与实现类似。l 管理员后台管理1.功能描述管理员后台管理主要面向管理员,包含网站首页设置、管理员站内信信息管理、网站订单管理、商品信息管理等功能,是网站的核心部分之一。2.需求规格分析管理员后台管理部分需求规格如表所示。管理员后台管理需求规格表功能编号功能名称功能描述1管理员站内信信息管理用来管理用户的需求,比如用户的意见、用户的投诉和用户站内信等等信息2网站首页设置用来定制网页首页显示的信息,包括网站广告、公告等信息3网站订单

33、管理用户创建的订单由管理员进行管理4商品信息管理管理出售中的商品3.功能详述(1)管理员站内信信息管理:用户在网站前台可以通过联系管理员的链接给管理员发送站内信,用来给网站提供建议等信息,管理员登陆后可以看到未读、已读、已发送和删除的信息,以列表形式显示,根据时间排序,分页显示,同时可以对信息进行搜索。管理员站内信管理是站内信的一部分。(2)网站首页设置网站首页设置包括网站的公告和广告图片的设置。图片的设置通过文件上传完成。(3)商品信息管理对商品信息的管理,包括添加、修改、删除、查询商品等。添加商品:当管理员添加商品信息时,首先需要填写商品的基本信息,包括商品类别图像等基本信息,点击添加之后

34、,系统会判断所填写的必要信息为否为空,不为空则添加商品,向数据库中添加一条商品的信息。修改商品信息:可以修改商品的基本信息,当提交修改之后的商品时,系统会判断校验修改之后的商品信息。删除商品:管理员可以删除指定编号的商品,当确认删除后,直接从数据库中删除该商品的全部信息。包括库存信息等。修改商品库存信息:管理员可以修改商品的库存信息,首先确定要修改的库存商品的商品编号,填写库存值,点击修改之后,系统会判断填写的信息基本类型是否为规定的整形,之后修改库存信息,修改对应数据库的记录。l 总体模型类设计描述的是系统的模型类,即mvc架构中的model层。其中:message、user、order、o

35、rderitem、comment、product、category、usercollection、productsgrade对应数据库中的表,其属性如数据库表中字段相同;cart、cartitem是购物车和购物车项,用于描述当前用户的购物信息。l 系统控制层设计控制层的类图,oper为操作的父类,所有操作都继承自该类。前台触发的远程调用调用该类子类的方法。该类为远程调用提供了获得web上下文的必要方法。constutil是常量工具类,为了常量的统一管理和防止神秘字符串的出现而设计。oper的子类共有四个,loginhandler、shoppingoper、useroper、dwr。用户在前台的

36、许多操作是以登陆为前提的,loginhandler就是处理需要登陆才可以实用的功能,具体的操作对应于loginhandler不同的子类,如果没有登陆就进行该类的子类提供的操作,会抛出nologinexception,该异常由前台javascript捕获,并给出相应操作。loginhandler的子类中使用到pageutil接口。pageutil是为分页设计的工具类,该类提供了分页的接口。其子类可以根据不同的持久层命名并实现。本系统中只实现了ibatispageutil子类,如果有需要,可以实现其他子类。简单类图shoppingoper是用户浏览商品是产生的操作,包括查看商品列表、搜索、查看商品

37、信息等。useroper是用户的一系列的操作,包括登陆、注册、找回密码等。该类中有些操作如修改密码、修改信息是需要登陆后才能进行的,这里进行单独控制,因为在访问页面时有了访问权限的控制。dwr类提供了切换页面的方法,网站后台的页面切换使用该方法。在前台调用forward时,传递需要跳转的页面的url,该方法返回申请的url的处理结果。loginhanler的子类包括:productcommentoper、usercollectionoper、shoppingcaroper、orderoper。productcommentoper处理商品评论和商品评分的各种操作,包括评论者权限的判断和对评论的查

38、询、增加等操作。usercollectionoper处理用户收藏的各种操作,包括显示、添加、删除等操作。shoppingcaroper是用户对购物车的操作,包括商品添加、购物项删除、数目修改等操作,商品添加和修改数目时可能会抛出noproductexception异常,该异常在商品数量不足时产生,javascript会捕捉该异常并给出相应回滚操作。orderoper是用户对订单的各种操作。当订单处于未处理状态时,用户可以修改订单、删除订单,当修改订购商品数量时也可能抛出noproductexception异常。控制层类图(4)代码设计l aop技术实现日志功能通过将struts动作委托给spr

39、ing框架而整合struts和spring的一个主要的优点是:您可以将spring的aop拦截器应用于您的struts动作。通过将spring拦截器应用于struts动作,您可以用最小的代价处理横切关注点。例如在本系统中,用aop技术实现日志功能,部分代码如下1.创建一个日志拦截器importjava.lang.reflect.method;importorg.springframework.aop.methodbeforeadvice;publicclasslogginginterceptorimplementsmethodbeforeadvicepublicvoidbefore(metho

40、dmethod,objectargs,objecttarget)throwsthrowablesystem.out.println("loggingbefore!");system.out.println("method.getname():"+method.getname();system.out.println("method.tostring():"+method.tostring();system.out.println("args.length:"+args.length);system.out.prin

41、tln("args0.getclass().getname():"+args0.getclass().getname();system.out.println("target.getclass().getname():"+target.getclass().getname();2.注册日志拦截器在spring的配置文件中添加下面的代码<bean name="logger"class="cn.dip.struts.filter.logginginterceptor"/><!-创建了一个be

42、an名称自动代理,它描述如何应用拦截器。还有其他的方法定义拦截点,但是这种方法常见而简便。-> <beanname="loggingautoproxy"class="org.springframework.aop.framework.autoproxy.beannameautoproxycreator"><propertyname="beannames"><!-将struts动作注册为将被拦截的bean。如果您想要拦截其他的struts动作,则只需要在"beannames&quo

43、t;下面创建附加的<value>标记。-><list><value>/register</value><value>/admin</value></list></property><propertyname="interceptornames"><!-当拦截发生时,执行了在(1)处创建的拦截bean的名称。这里列出的所有拦截器都应用于"beannames"。-><list><value>logger<

44、/value></list></property></bean>到这里,日志记录拦截器的准备工作都已经做好了,在这个例子中,将struts动作管理委托给spring,通过在struts-config.xml动作映射中注册一个代理来实现。代理负责在spring环境中查找struts动作。由于动作在spring的控制之下,所以它可以填充动作的javabean属性,并为应用诸如spring的aop拦截器之类的特性带来了可能。l 表示层技术实现在本系统中,表示层所采用的技术框架是当前较流行的struts框架,使用struts技术框架,可以有效的将显示逻辑和业务

45、逻辑相分离,达到分层的效果。如本系统中已登陆模块为例。publicclassloginactionextendsactionpublicactionforwardexecute(actionmappingmapping,actionformform,httpservletrequestrequest,httpservletresponseresponse)throwsexceptionregisteractionformrform=(registeractionform)form;applicationcontextapplication=webapplicationcontextutils.

46、getrequiredwebapplicationcontext(request.getsession().getservletcontext();usermanagerusermanager=(usermanager)application.getbean("usermanager");/获取表单参数useru=newuser();u.setusername(rform.getusername();u.setuserpassword(rform.getuserpassword();/如果存在该用户将用户保存在session中booleanisexist=usermanag

47、er.checkuser(u);if(isexist)/取出用户登录必要信息userusersignon=usermanager.getsignonbyusername(rform.getusername();request.getsession().setattribute("usersignon",usersignon);/取出用户基本信息用于以后该买宠物时使用useruser=usermanager.getuserbyusername(rform.getusername();request.getsession().setattribute("userinf

48、o",user);returnmapping.findforward("success");elsestringerrors="invalidusernameandpassword"request.setattribute("errors",errors);returnmapping.findforward("loginfail");l 数据层的实现数据层的实现是采用ibatis技术框架来实现的。ibatis提供了一个简洁的框架,使用简单的xml描述文件将javabean,map实现本数据类型的包装类(s

49、tring,integer等)映射成jdbc的preparedstatement。以下流描述了sqlmaps的高层生命周期:将一个对象作为参数(对象可以是javabean,map实现和基本类型的包装类),参数对将为sql修改语句和查询语句设定参数值。1.执行mappedstatement。这是sqlmaps最重要的步骤。sqlmap框架将创建一个preparedstatement实例,用参数对象为preparedstatement实例设定参数,执行preparedstatement并从resultset中创建结果对象。2.执行sql的更新数据语句时,返回受影响的数据行数。执行查询语句时,将返回

50、一个结果对象或对象的集合。和参数对象一样,结果对象可以是javabean,map实现和基本数据类型的包装类。例如在本系统中,已添加商品为例,简要介绍ibatis技术实现。对应product类的product.xml配置文件如下所示:,<?xmlversion="1.0"encoding="utf-8"?><!doctypesqlmappublic"-//dtdsqlmap2.0/en""/dtd/sql-map-2.dtd&qu

51、ot;><sqlmap><typealiasalias="product"type="com.hanjian.model.product"/><typealiasalias="type"type="com.hanjian.model.type"/><typealiasalias="inventory"type="com.hanjian.model.inventory"/><resultmapid="get-

52、product-result"class="product"><resultproperty="productid"column="productid"/><resultproperty="productname"column="productname"/><resultproperty="type"column="typeid"select="gettype"/><result

53、property="marketprice"column="marketprice"/><resultproperty="memberprice"column="memberprice"/><resultproperty="feature"column="feature"/><resultproperty="size"column="size"/><resultproperty="

54、;other"column="other"/><resultproperty="searchkey"column="searchkey"/><resultproperty="image"column="image"/><resultproperty="productdetails"column="productdetails"/><resultproperty="isrecommend&q

55、uot;column="isrecommend"/><resultproperty="isnewarrival"column="isnewarrival"/><resultproperty="catid"column="catid"/></resultmap><insertid="addproduct"parameterclass="product">insertintoproduct(productn

56、ame,marketprice,memberprice,feature,size,other,searchkey,image,productdetails,isrecommend,isnewarrival,catid,typeid)values(#productname#,#marketprice#,#memberprice#,#feature#,#size#,#other#,#searchkey#,#image#,#productdetails#,#isrecommend#,#isnewarrival#,#catid#,#typeid#)<selectkeyresultclass="int"keyproperty="productid">selectlast_insert_id()</selectkey></insert></sqlmap>该配置文件为对应类product的配置文件。添加商品的代码如下。publicclassproductdaoimplimplementsproductdaopublicintaddproduct(productp)inti=0;tryi=(integer)sqlmapclientinstanc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论