基于S2SH电子商城毕业设计论文.docx
《基于S2SH电子商城毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于S2SH电子商城毕业设计论文.docx(67页珍藏版)》请在冰豆网上搜索。
基于S2SH电子商城毕业设计论文
基于S2SH电子商城毕业设计论文
摘要
随着信息化网络的发展,网络对人们的生活影响越来越大,网上购物也逐渐成为一种趋势,这对电子商场的发展起到了很好的推进作用。
本文主要通过对电子商城的应用环境和主要实现功能进行分析,叙述了本电子商城的设计与实现过程。
该系统是基于多层企业级应用标准JAVAEE技术开发的WEB应用,以典型的MVC模式架构为基础。
采用JaveEE5轻量级框架SSH与前台Ajax技术相结合来实现,在设计过程中全方位的应用软件工程的开发思想,对项目进行UML建模包括各模块的类图、时序图等。
系统基于B/S分布式结构,适应范围广阔。
关键词:
电子商城;SSH;Ajax;框架
Abstract
Withthedevelopmentofinformationnetworks,thenetworkplaysanincreasingroleinpeople'slives,andonlineshoppingisbecomingatrend,whichwonderfullyfacilitatesthedevelopmentofelectronicstore. Thisarticleisfocusedontheanalysisoftheappliedenvironmentofelectronicmallandthemainachievementfunction,forthepurposeofdescribingthedesignandimplementprocessofE-mall.Thesystemisbasedonthewebapplicationdevelopedwithmulti-standardenterpriseapplicationstandardJAVAEE,framedwithclassicalMVCmodelarchitecture,andrealizedthroughthecombinationof lightweightframeworkSSHandfrontdeskAjaxtechnology. InthedesignprocessafullrangeofapplicationdevelopmentsoftwareengineeringdevelopmentideaswasusedintheUMLmodelingoftheproject,whichincludedclassdiagrams,sequencediagrams. ThesystemisbasedonB/Sdistributedarchitecturetomeetabroadrangeofrequirements.
Keywords:
ElectronicMall,SSH,Ajax,Framework
1.引言
随着网上购物的迅猛发展,电子商城大量涌现,而电子商城的出现不仅改变了人们传统的购物方式,也逐渐的影响着人们的消费观,一个好的电子商城不仅能给客户带来方便,更能给企业带来巨大的财富。
本商城主要利用JavaEE与Ajax技术进行开发,具有很强的安全性、可靠性和可扩展性。
其前台实现了从商品选购到订单提交整个业务流程,后台实现了对整个系统的管理,就整体功能而言,能满足基本的网上购物需求,能让用户感到便捷、快速,让企业管理、维护更简单。
2.设计目的与任务
随着信息化技术在生活中的应用越来越广泛,网上购物也逐渐成为人们的一种生活方式。
本系统正是基于这样一种环境下应运而生。
本电子商城分为前、后台两部分,前台主要实现会员的网上购物业务流程,后台则由各种管理员对商城会员、商品、定单等内容进行管理。
3.需求分析
本电子商城分为前后台两部分,前台主要包括非会员和会员用户,后台分为商品管理员、订单管理员、会员管理员和系统管理员。
在系统中依据用户的权限执行相应的功能。
系统用例图如下所示:
图3-1系统用例图
4.系统设计
4.1分层模式
本系统是基于B/S模式开发的JAVAEE多层体系结构WEB应用。
系统开发主要分为以下几层:
表示层、业务层、DAO层、持久层。
业务层和DAO层都通过接口与其它层进行连接从而减小了各层之间的耦合度,实现高内聚、低耦的思想。
分层结构图如下所示:
图4-1系统分层结构
4.2开发技术与工具
主要开发工具为:
MyEclipse8.6、Mysql6.0、Tomcat6.0、PowerDesigner12。
主要技术包括:
JavaEE轻量级框架S2SH、MD5算法、Log4j、Ajax、JSON。
S2SH集成框架是Struts、Spring和Hibernate三种技术的有机融合,是目前应用最广泛的JavaEE架构。
在S2SH集成框架中,Struts的作用是提供MVC模型,将界面、业务逻辑和数据分离,并提供一个高可扩展的架构。
Spring作为核心,向上整合MVC框架,向下整合ORM框架,使用Spring的IoC容器来管理各组件之间之间的依赖关系,Spring的声明事务将负责逻辑层组件的事务管理。
而Hibernate提供了一个抽象的数据服务视图,将用户对数据库的访问进行高度抽象。
Struts是目前创建Web应用最常用的表现层MVC框架实现,是JakartaApache的一个开源项目。
基于Model2的Struts框架利用控制器和定制标签库将应用中的模型和视图分离,达到了层间松散耦合的效果,同时提高系统的灵活性、重用性和维护性。
作为开源项目,Struts经受了大量实践的检验,功能越来越强大,体系也日臻完善,并且对其他技术和框架显示出良好的融合性。
图4-2Struts2.0MVC结构图
Spring由RodJohnson创建,它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
图4-3Spring功能图
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
图4-4Hibernate运行图
AJAX是AsynchronoutJavaScriptandXML的缩写,它并不是一门新的语言或技术,实际上是几项技术按一定的方式组合在一起,在共同的协作中发挥各自的作用,它包括:
使用XHTML和CSS标准化呈现;使用DOM实现动态显示和交互;使用XML和XSLT进行数据交换和处理;使用XMLHttpRequest进行异步数据读取;最后用JavaScript绑定和处理所有数据。
AJAX的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新页面),这一特点要得益于XMLHTTP组件XMLHttpRequest对象。
这样就可以像再发桌面应用程序只同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作提交给服务器来做,这样即减轻了服务器的负担又加快了响应速度、缩短了用户等候时间。
图4-5Ajax模型
JSON(JavaScriptObjectNotation,JavaScript对象标记)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
它基于JavaScript(StandardECMA-2623rdEdition-December1999)的一个子集。
JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。
而AJAX可以利用JSON更加有效地接收数据,因为JSON特殊的属性。
在Struts2的showcase中的AJAX部分,JSON的结果输出是通过Freemaker模板实现。
这种方法在简易性和灵活性上都比不上JSON插件。
MessageDigestAlgorithmMD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
当用户登录的时候,系统把用户输入的密码进行MD5Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。
通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。
这可以避免用户的密码被具有系统管理员权限的用户知道。
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
4.3总体设计
4.3.1系统总体结构
本系统分为前台和后台两部分,前台提供一条网上购物业务流程的功能实现,主要实现模块见图4-6;后实现对前台功能信息的管理,主要实现模块见图4-7。
前台功能模块:
图4-6前台功能模块
后台功能模块:
图4-7后台功能模块
4.3.2流程图
前台主要分为非会员用户和会员用户,其中只有会员用户才能实现在线购物,而非会员用户必需进行注册。
后台用户主要分为商品管理员、会员管理员、定单管理员、系统维护员,不同的管理员实现不同的功能。
前台流程图:
图4-8前台流程图
后台流程图:
图4-9后台流程图
4.4详细设计
4.4.1数据库设计
本系统数据库开发主要基于Mysql6.0数据库管理工具,包括8个数据库表如下所示:
●数据字典
表4-1e_shop数据表清单
表名
解释
ADMIN
管理员表
CART
购物车表
EVALUATE
商品评价表
MEMBER
会员表
MERCHANTABLE
商品表
ORDERS
定单表
RECORD
记录表
TYPES
类别表
表4-2后台管理员表(ADMIN)
ADMIN(admin)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
ADMIN_ID
管理员编号
INT
(2)
2
ADMIN_NAME
管理员名
VARCHAR(50)
50
ADMIN_PWD
管理员密码
VARCHAR(30)
20
ADMIN_TYPE
管理员种类
INT
(1)
1
表4-3购物车表(CART)
CART(cart)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
CART_ID
购物车编号
INT(5)
5
CART_MEM_ID
会员编号
INT(5)
5
是
CART_MER_ID
商品编号
INT(6)
6
是
CART_NUM
商品数量
INT(3)
3
是
表4-4商品评价表(EVALUATE)
EVALUATE(evaluate)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
EVAL_ID
评价编号
INT(3)
3
EVAL_MEM_ID
会员编号
INT(5)
5
是
EVAL_MER_ID
商品编号
INT(6)
6
是
EVAL_DATE
评价日期
VARCHAR(20)
20
是
EVAL_CONTENT
评价内容
VARCHAR(200)
200
是
表4-5会员表(MEMBER)
MEMBER(member)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
MEM_ID
会员编号
INT(5)
5
MEM_NAME
会员名称
VARCHAR(50)
50
MEM_PWD
会员密码
VARCHAR(30)
20
MEM_TEL
联系电话
VARCHAR(15)
15
是
MEM_ADDRESS
联系地址
VARCHAR(50)
50
是
MEM_REGIST_DATE
注册日期
VARCHAR(10)
10
是
MEM_POST
邮编
VARCHAR(10)
10
是
MEM_EMAIL
EMAIL
VARCHAR(20)
20
是
MEM_CART_ID
购物车编号
INT(5)
5
是
表4-6商品表(MERCHANTABLE)
MERCHANTABLE(merchantable)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
MER_ID
商品编号
INT(6)
6
MER_NAME
商品名称
VARCHAR(50)
50
MER_TYPE_ID
商品种类
INT(3)
3
是
MER_PLACE
出产地
VARCHAR(50)
50
是
MER_PRICE
价格
DECIMAL(8,2)
8
MER_DISCOUNT
折扣
DECIMAL(2,1)
2
是
MER_PICTURE
图片
VARCHAR(50)
50
是
MER_DESC
描述
VARCHAR(50)
50
是
MER_PRODUCTER
厂家
VARCHAR(60)
60
是
MER_LEAVE_DATE
出厂时间
VARCHAR(10)
10
是
MER_ADD_DATE
添加时间
VARCHAR(10)
10
是
MER_NUM
销售数量
INT
0
表4-7定单表(ORDERS)
ORDERS(orders)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
ORDER_ID
定单编号
INT(6)
6
ORDER_DATE
定单日期
VARCHAR(20)
20
是
ORDER_MEM_ID
会员编号
INT(5)
5
是
ORDER_STATUS
定单状态
INT
(1)
1
是
ORDER_SEND_TIME
发送时间
VARCHAR(60)
60
是
ORDER_REMARK
定单备注
VARCHAR(100)
100
是
ORDER_SUM
价钱总和
DECIMAL(8,2)
8
是
表4-8记录表(RECORD)
RECORD(record)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
RECORD_ID
记录编号
INT(6)
6
RECORD_MER_ID
商品编号
INT(6)
6
是
RECORD_MER_NUM
商品数量
INT(3)
3
是
RECORD_ORDER_ID
定单编号
INT(6)
6
是
表4-9类别表(TYPES)
TYPES(types)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
TYPE_ID
类别编号
INT(3)
3
TYPE_NAME
类别名称
VARCHAR(30)
30
是
TYPE_DESC
类别描述
VARCHAR(100)
100
是
●数据库概念设计
将抽象的需求转为数据库概念结构,即概念模式。
图4-10概念图
●数据库物理设计
依据所用的数据库由概念模型生成相应的物理模型,如下图所示。
图4-11物理图
4.4.2系统开发规范及说明
1.系统目录及说明如下图
依据架构思想,将开发类主要分为action、bean、dao、service逻辑包。
action包含所有的控制层类,bean包含所有领域对象及相应的ORM映射文件,dao包含所有的持久层抽象类,service包含所有业务层类。
另一方面根据系统开发所需建立filter(过滤器)包、listener(监听器)包、tool(工具)包。
具体如下图所示:
图4-12系统目录图
2.Struts配置文件
图4-13Struts配置文件图
4.4.3具体模块设计
1.模块分析与设计:
整个系统主要包括商品信息模块、会员模块、购物车模块、订单模块、商品类别、后台管理员模块。
商品信息模块:
本模块主要用来显示、查询和商品评论的功能。
主要涉及的类和方法如下类图。
其中PageServiceImpl为分页实现类,在整个系统中属于一个公共组件,故在各模块中不再重复介绍。
另一方面各模块各层之间类的关系也大致相同,都可以参考以下类图。
图4-14商品模块类图
表4-10商品模块主要应用类
类名
含义
MerchantableAction
作为其控制层内容,调用相应的业务方法
HeadService
业务层抽象类,其实现类中包含相应的业务方法
MerchantableDAO
包含相应的持久层方法
表4-11MerchantableAction类
方法
含义
showByType()
调用业务层方法按类别显示商品
showById()
调用业务层方法显示某种商品
research()
调用业务层方法查询商品
showAllMer()
调用业务层方法显示所有商品
deleteMer()
调用业务层方法删除商品
updateMer()
调用业务层方法修改商品信息
saveMer()
调用业务层方法保存商品信息
表4-12HeadService
方法
含义
findById()
调用持久层方法按商品编号查询商品
findByType()
调用持久层方法按种类查询商品
researchMer()
按条件查询商品
deleteMer()
删除商品
updateMer()
修改商品
saveMer()
保存商品
表4-13MerchantableDAO类
方法
含义
findAllByKeyword()
按关键字查询所有商品
findByTypes()
按各类查询商品
findById()
按商品编号查询商品
delete()
删除商品
findAll()
查询所有商品
saveOrUpdate()
保存或修改商品
findByNum()
依据数量查询
findPartByTyps()
依据种类查询部分商品
会员模块:
在本模快中用到了两控制层类LoginAction和LoginJsonAction,前者用于普通的控制调用业务层方法,同时返回相应的业务逻辑视图。
后者则是用Struts和Json相结合应用的,首先是能过Ajax提交数据当相应的action,然后调用业务层方法处理完成返回并不是返回某个逻辑视图,而是将返回的信息通过Json进行数据转换,前台通过Ajax接收数据。
表4-14会员模块主要应用类
类名
含义
LoginAction
普通形式的控制器,调用相应的业务层方法
LoginJsonAction
Ajax提交时使用的控制器
UserService
业务层类,包含各种相应的业务处理方法
MemberDAO
包含相应的持久层方法
表4-15LoginAction类
方法
含义
modifyPwd()
调用业务层方法修改会员密码
modifyAddress()
调用业务层方法修改会员地址等信息
regist()
调用业务层方法注册
showMem()
调用业务层方法后台显示所有会员
delMem()
调用业务层方法删除会员
表4-16LoginJsonAction类
方法
含义
execute()
调用业务层方法会员登录校验
表4-17UserService类
方法
含义
modifyPwd()
修改会员密码
modifyAddress()
修改会员地址等信息
save()
保存会员
delMem()
删除会员
表4-18MemberDAO类
方法
含义
findByNameAndPwd()
按用户名和密码查询用户
saveOrUpdate()
保存或修改会员信息
findAll()
查询所有会员
delete()
删除会员
购物车模块:
同上面的会员模板,在此模块中也有两个控制类CartAction和CartJsonAction。
表4-19购物车模块主要应用类
类名
含义
CartAction
普通形式的控制器,调用相应的业务层方法
CartJsonAction
Ajax提交时使用的控制器
HeadService
业务层类,包含各种相应的业务处理方法
CartDAO
包含相应的持久层方法
表4-20CartAction类
方法
含义
execute()
调用业务层方法查询会员相应的购物车
update()
调用业务层方法修改购物车
delete()
调用业务层方法删除购物车
表4-21CartJsonAction类
方法
含义
add()
添加商品到购物车
表4-22HeadService类
方法
含义
findCartByMember()
依据会员查询相应的购物车
updateC