SSH网上书城的设计与实现(毕业论文12100字)
【摘要】
当今风靡全球的热潮是Internet,也就是互联网,它正改变我们的生活,并将远远超过电话、电报、汽车、电视……对人类生活的影响。Internet能带给我们知识、信息、机会、观念……甚至更多,它早已不是电脑专业人士的专利了,它已成为千千万万人士不可缺少的生活组成部分了。
本文主要讲述了我毕业设计的主要目的是为客户设计一个实用的网上书城系统,让用户更好,更方便的购买书籍!在此次设计中我使用 Myeclipse8.6,DB2,tomacat6.0,FireFox为开发平台,设计并实现了一个网上书城系统。网上书城系统具有用户注册、购物、提交订单、付款等功能。更重要的是通过对此课题的研究和开发这个系统更让我熟悉SSH技术和对项目开发的了解与认识,熟练掌握Myeclipse开发的流程,为将来做个好的程序员做好充分的准备!
【关键字】电子商务;网上书店;JAVA;Myeclipse;SSH框架
Online bookstore
Abstract:
The craze swept the world today is the Internet, it is changing our lives far more than the telephone, telegraph, automobiles, television ... The Internet can bring our knowledge, information, opportunities, ideas ... and even more, it is no longer computer professionals patent, it has become a indispensable part to hundreds of thousands of people’s life.
This article focuses on the main purpose of my graduation project is for customers to design a useful online bookstore system, allowing users better, more convenient access to buy books! This paper describes the main purpose of my graduation project is for customers to design a useful online bookstore system, allowing users to better, more convenient and safer to buy the books! In this design, I use Myeclipse8.6, DB2, tomacat6.0, FireFox as a development platform, to design and realize an online bookstore system. The online bookstore system has a user registration, shopping, submit orders, payment and other functions. More important is the topic of research and development of this system made me familiar with SSH technique and the understanding and awareness of the project development, master Myeclipse development process fully prepared for the future to be a good programmer!
Key words:E-commerce; online bookstore; JAVA; Myeclipse; SSH framework
目 录
摘 要 i
Abstract ii
引言 - 1 -
一、系统的开发工具和环境 - 1 -
(一)MyEclipse概述 - 1 -
(二)SSH框架 - 1 -
1.Struts2概述 - 1 -
2.Hibernate的概述 - 1 -
3.Spring的概述 - 1 -
(三)DB2的概述 - 1 -
(四)系统的开发需求 - 1 -
二、概要设计 - 1 -
(一)系统的需求分析 - 1 -
(二)概要设计 - 1 -
1.面向用户部分 - 1 -
2.面向管理员部分 - 1 -
三、数据库设计 - 1 -
(一)需求概述 - 1 -
(二)数据库设计 - 1 -
1. TB_UserNecessary用户表 - 1 -
2. TB_UserDetail用户详细表 - 1 -
3.TB_Address用户地址表 - 1 -
4.TB_Book图书表 - 1 -
5.TB_Order订单表 - 1 -
6.TB_Comment评价表 - 1 -
7.TB_Manager管理员表 - 1 -
8.TB_SuNingPay易付宝表 - 1 -
四、详细设计与实现 - 1 -
(一) 基础框架搭建(SSH) - 1 -
(二) 界面设计与实现详情 - 1 -
参考文献 - 1 -
致 谢 - 1 -
引言
网络的发展速度是非常惊人的,自70年代网络的出现至今,仅仅过了30年左右的时间,而联网的主机数量、网络的规模、信息交换的数量和速度都已经有了长足的进步。今天的人们,无论身在何方,只要他们连入了互联网,利用各种网络中的传输技术(电子邮件、图文传输),便将他们联系在一起。尽管他们实际上是天涯海角。网络技术使这个世界变得小了,增进了人们之间的联系。
网络的发展,刺激了新技术的诞生。其中JAVA技术是比较突出的,它一出现便立刻引起了人们的关注。Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。在早期,Java比较多的用在浏览器上,插入到网页中(即是Java Applet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(Java Server Page)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择[2]。
电子商务是基于Internet的B / S应用的开放环境中,通常在世界各地广泛的商业和贸易活动中,买家和卖家不谋面地进行各种商务活动,实现消费者的网上购物,商户之间的网上交易和网上电子支付以及各种商务活动,交易活动,金融活动和相关综合服务活动的一个新的商业模式。
电子商务是通过电子手段来创造一个新的经济秩序,不仅涉及电子技术和商业交易中,涉及其他层面,如财政,税务,教育,社会,计算机网络的第二次革命。电子商务应相应分成两大类:企业组织-企业组织(Business-Business,B2B)型和企业组织-消费者(Business-Consumer,B2C)型。据统计,60%的电子商务活动的收入是B2B业务活动,明显比个人消费者,主要是为企业和企业,这是由于信息技术的程度和技术水平的企业组织,提供采购,销售和结算服务,如淘宝。B2C是我们最熟悉的,它直接为大众消费者服务,如苏宁易购。它通常是两种形式,一种是类似于一个大的商场,商场的柜台很多,用户可以直接去到柜台选择和购买自己满意的事情,然后去结账,商场的柜台及相关服务。并收集相应的计数器使用费;另一种形式类似的一家超市,里面摆放着大量的商品,消费者选择直接购买。
一般意义上,一个完整的电子商务系统包括信息流、资金流与物流三个要素,三者相辅相成。信息流就是通过电子网络向客户揭示所售商品的有关信息,引导客户在网络上进行购物。资金流就是使客户在选择商品后,能够通过网络支付相关费用,一般包括预付款支付、网上银行支付、货到付款等多种形式。目前有些电子商务网站也可以接受邮局汇款。物流就是把客户所购买的商品通过物流配送系统送到客户手中,对于一些特殊行业和领域和电子商务,如证券、金融信息类商品,也可能不需要配送系统的支持就可以把商品送到客户手中(如股票、电子杂志、域名注册等)。在电子商务中,除了上述三个要素外,网络安全也是需要重点考虑的因素。据调查,有1/3的网民认为网络安全是影响其网上购物的因素,因此为了保证网络交易的安全,电子商务网站需要采用数据加密、电子签名等多种措施进行安全认证。
网上书店系统,网络覆盖全球,丰富和独特的。对于读者来说,网上书店近在咫尺,并且永不下班关门,读者可以查询图书和下订单,读者并不需要亲自去书店,一档一档地找,一本一本地翻,只要坐在电脑前,直接开机上网就可以购买所需的书籍,读者的选择空间大多了,检索也很方便。网上书店节省了大量的时间,对于那些不经常访问的传统书店或居留远离的读者具有实际意义。在线图书销售肯定会取得了很大发展。
网上书店是电子商务的一部分,电子商务应有的功能、网上书店也应该具有。作为商业软件的设计是相当不同的,网上书店并不完全一致,有的多,有的少。笔者认为,网上书店是一种无店铺的商店,人们不出门,在计算机联网的网络上作业,就可进行远距离的图书销售与订购。
本次毕业设计的网上书店系统主要是以实现购书和定单的功能作为设计的重点,实现了网络书店的一些最基本和必须的功能,其他的详细复杂的功能并没有多大涉及。
一、系统的开发工具和环境
(一)MyEclipse概述
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率[3]。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。
在结构上,MyEclipse的特征可以分为7大类:Java EE模型;WEB开发工具;EJB开发工具;应用程序服务器的连接器;Java EE项目部署服务;数据库服务;MyEclipse整合帮助。对于以上的每一种功能上类别,在Eclips中都有相对应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一个模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的Java EE集成开发环境,支持代码编写、配置、测试以及除错。MyEclipse6.0以后版本安装时不需安装Eclipse。
(二)SSH框架
框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟和不断升级的软件。框架(Framework)是一个系统的全部或部分可重复使用的设计,展现出一组抽象的部件和组件的实例方法之间的相互作用;另一种定义,框架可以是应用程序开发定制的应用骨架。前者是后者从应用程序的定义是从目的的方面。
大名鼎鼎的SSH指的就是Struts,Spring, Hibernate。
1.Struts2概述
Struts 2是在WebWork 2的基础上进行开发的,Struts2其实就是WebWork2.3,它和Struts1.x并没有关系。Struts2框架是由两部分组成:XWork2和Struts2。XWork是一个命令模式框架,它是Struts2的基础。XWork提供了很多核心功能:IOC(控制反转)容器、强大的表达式语言(OGNL)、数据类型转换、验证和可插入的配置。XWork框架的核心概念包括action、拦截器(interceptor)和result。Struts2扩展了这些概念的基础实现,用于支持Web应用程序的开发。
在Struts2中,拦截器是一个重要的概念。拦截器可以在Action被调用之前和之后执行代码。Struts2框架的大多数核心功能都是通过拦截器来实现的。拦截器的工作原理如下图:
Struts2的体系结构:当一个初始请求到达Servlet容器,它会经过一系列的标准Filter链,这些Filter链包括ActionContextCleanUp filter:发挥作用当集成像SiteMesh Plugin一类的技术,接着FilterDispatcher被调用,通过轮询参考ActionMapper决定一个请求和一个Action相关联!当 ActionMapper决定了一个Action的调用,FilterDispatcher委托ActionProxy控制, ActionProxy参考框架的配置文件管理,接着,ActionProxy生成一个ActionInvocation,它负责命令执行,这样调用任何拦截器先于调用Action一Acion执行完毕.ActionInvocation负责查找适当的结果以和struts.xml中的action result code相比较,结果一般是调用一个在JSP或FreeMarker中绘制的模板!
2.Hibernate的概述
Hibernate是一个开源的对象关系映射框架,JDBC非常轻量级的对象封装,使得Java程序员可以使用任意对象编程思维来操纵数据库[4]。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。
Session接口:Session接口主要负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的[5]。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
SessionFactory接口:SessionFactory接口主要负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory[5]。
Configuration类:Configuration类主要负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
Transaction接口:Transaction接口主要负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口:Query和Criteria接口主要负责执行各种数据库查询。它可以使用HQL语句或SQL语句两种表达方式。
3.Spring的概述
Spring是一个开源框架,它由Rod Johnson创建。是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架[12]。
Spring的应用框架如下:
轻量级(LightweightSpring):核心包容量小,资源负担很小。
非侵入性(No intrusive):减少程序对框架API的依赖,让程序感觉不到框架存在,减低程序移植负担,增加程序组件可重用性
容器(Container):容器一旦启动,自动完成对象的寻找、实例化和装配,不
需要编写任何一行代码
IoC(Inversion of Control):Dependency Injection依赖注入。不需要在代码中来维护对象之间的关系,只需通过配置文件管理对象间的依赖关系(Spring容器自动管理)。
AOP(Aspect-oriented programming):在不修改现有程序的情况,给程序加入新的功能。目的是使原有程序不用被修改,不用重新编译,使原代码保持简洁,重用性高。如果需要撤消新的功能也不需要修改原代码。
持久层:提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。封装包提供了一种比编程性更好的声明性事务管理方法。提供了常用的“对象/关系”映射APIS的集成层
WEB框架:集成各类WEB框架,也有自己的MVC实现。
Core 封装包是框架的最基础部分,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置[6]。
Context(上下文) 封装包构筑于Core封装包的坚固基础上:它提供了用一种框架风格的方式来访问对象,有些像JNDI注册表。Context封装包继承了beans包的功能,还增加了国际化(I18N)(用于规范resource bundle),事件传播,资源装载,以及透明创建上下文,例如通过servlet容器[6]。
DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC 封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用[6]。
ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理[6]。
Spring的 AOP 封装包提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中,这有点象.Net的attribute的概念[6]。
Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的application context。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。
Spring中的 MVC 封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种 清晰的 分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。
(三)DB2的概述
DB2是IBM公司研制的一种数据库管理系统,UDB是Universal Database,即通用数据库的简称。20世纪80年代初DB2的发展重点放在大型的主机平台上,从20世纪80年代中期到20世纪90年代初DB2已经发展到中型机、小型机以及微型机等多种平台上。它具有极强的伸缩性和扩充能力,数据库的使用和管理也非常方便。
DB2提供高性能的数据库存储和基于SQL标准的对关系数据库的访问方式,并且DB2在已有的关系引擎的基础上,引入了一种基于XML数据的优化的数据存储引擎。应用程序开发人员可以将XML数据直接存储在DB2服务器中,并且拥有搜索大量的XML数据的能力。
1.DB2 提供了不同级别的产品,对小到个人用户,大到跨国企业的不同需求。
2.Personal edition为个人用户设计的功能完备的个人数据库产品,允许用户在本地建立数据库,通过内置的客户端对远程数据库服务器进行管理,不支持响应远程请求。
3.Express Edition功能全面的支持Web的客户机/服务器关系型数据库管理系统。DB2 Express 可以用于基于Windows和Linux的工作站。主要用于小型企业和部门的计算任务。
4.Developer edition功能全面的支持Web的客户端/服务器关系型数据库管理系统。它可以用于所有支持的UNIX版本、Linux和Windows。它适合中型和大型的部门服务器,它包含了Express和Workgroup的所有功能,还添加其它功能。
5.Workgroup server edition功能全面的支持Web的客户机/服务器关系型数据库管理系统。它可以用于所有支持的UNIX版本、Linux和Windows。主要用于小型企业和部门的计算任务。
6.Enterprise server edition功能全面的支持Web的客户端/服务器关系型数据库管理系统。它可以用于所有支持的UNIX版本、Linux和Windows。它适合中型和大型的部门服务器,它包含了Express和Workgroup的所有功能,还添加其它功能。
7.Enterprise server edition with data partitioning feature增加了data partitioning功能
(四)系统的开发需求
本次开发的网上书城对操作系统的要求如下:
操作系统:Windows XP
浏览器:FireFox
Web 服务器:Apache Tomacat6.0
数据库:DB2
IDE工具:Myeclipse8.6
二、概要设计
(一)系统的需求分析
网上书城包含二部分:其一是面向用户的部分,包括:首页、用户注册、购物、提交订单、付款等模块。其二是面向管理员部分,包括:图书管理。
(二)概要设计
1.面向用户部分
1) 用户模块
A.注册
网站顶部需要有注册入口的链接
支持用户名注册,需要输入:用户名,邮箱,密码,重复密码
对用户名进行javascript检测,看是否被占用
对邮箱进行javascript检测,看是否符合邮箱格式
对密码进行javascript检测,长度大于5位,两次必须一样
点击完成注册跳转到登录页面
2)登录
A.网站顶部需要有登录入口的链接
支持用户或邮箱登录,需要输入:用户名,密码两者是缺一不可,否则会报相应的错误提示。
登录失败返回首页
登录成功则进入首页,并出现欢迎词
登录成功将此用户加入Session中
3)收货地址填写
A.网站顶部需要有个人中心链接入口
点击 收货地址 链接,在此页面中用户可以增加收货地址,和删除收获地址
4)查询订单
A.个人中心中需要有 我的订单 链接入口
点击进入订单模块
5)图书模块
首页推荐书列表
书列表需要显示:图片,书名,价格,图书描述,作者,出版社,出版日期,作者描述,评级,评级人数,打折情况,库存,是否上架。
A.查看图书详细信息
在书列表中点击图片或书名进入详细信息
详细信息中应显示:图片,书名,价格,图书描述,作者,出版社,出版日期,作者描述,评级,评级人数,打折情况,库存,是否上架。
B.点击购买单个图书
在书类表中的每个图书需要有购买按钮
图书详细信息中需要有购买按钮
点击 购买 进入订单模块,显示此图书的订单
6)订单模块
A.订单列表
首页需要有 我的订单 链接入口
点击进入订单列表
列表显示:订单编号,书名,下单时间,单价,购买数量,订单状态,支付方式,删除。
B.查看订单
需要显示图书列表:订单编号,书名,下单时间,单价,购买数量,订单状态,支付方式,删除。
C.付款
订单详细中需要有付款按钮,点击进入付款模块
C.删除订单
列表中的每订单需要有删除按钮,根据订单编号,点击删除订单
7)付款模块
A.选择付款方式
选择易付宝:记录易付宝帐号(必须激活)
给易付宝充值,目前是使用后台手工充值
返回订单列表
2.面向管理员部分
1)管理员登录模块
支持用户登录,需要输入:用户名,密码两者是缺一不可,否则会报相应的错误提示
登录成功则进入管理员首页,
2)图书管理模块
A.新增图书
图书列表需要有 新增图书 按钮
点击 新增图书 添加图书,需要填写字段:图片,书名,价格,图书描述,作者,出版社,出版日期,作者描述,评级,评级人数,打折情况,库存,是否上架。
点击确定返回列表
B.修改图书
列表中的每本图书需要有修改按钮,可以修改的字段:图片,书名,价格,图书描述,作者,出版社,出版日期,作者描述,评级,评级人数,打折情况,库存,是否上架。
根据图书编号,点击确定编辑并刷新页面
C.删除图书
列表中的每本书需要有删除按钮,根据图书编号,点击删除此书
三、数据库设计
(一)需求概述
网上书城包含二部分,其一是面向用户的部分,包括:首页、用户注册、购买图书、提交订单、付款等模块。其二是面向管理员部分,包括:管理员登录模块,图书管理模块。
(二)数据库设计
1. TB_UserNecessary用户表 主键:user_Id
表3.1 用户表
字段名字 含义 数据类型 大小 是否主键 是否可以为空 备注
user_Id 用户ID INTEGER 10 PK N 自动递增
user_Name 用户名字 VARCHAR 20 N 惟一
user_Password 用户密码 VARCHAR 30 N
user_Email 用户邮箱 VARCHAR 35 N 惟一
register_Time 用户注册时间 TIMESTAMP 26 N 系统当前时间
register_IP 注册 IP varchar 20 Y
2. TB_UserDetail用户详细表 外键:user_Id
表3.2 用户详细表
字段名字 含义 数据类型 大小 是否主键 是否可以为空 备注
user_Id 用户ID INTEGER 10 FK Y 外键
user_Sex 性别 varchar 6 N 判断男,女
id_Card 身份证号码 varchar 30 Y 判断等级
telephone_Num 手机号码 varchar 15 Y
hobby 我的喜好 varchar 500 Y
grade 用户等级 varchar 15 N
activity_Score 活动积分 INTEGER 10 Y
consume_Score 用户积分 INTEGER 10 Y
postal_Code 邮政编码 CHAR 6 Y
address_Now 现住地址 varchar 200 Y
fixed_Phone 固定电话 varchar 15 Y
salary 收入 INTEGER 10 Y
user_Img 用户图片 varchar 50 Y
isSuNing_Pay 是否激活 char 1 Y 0:代表未激活,1:表示已激活
3.TB_Address用户地址表 主键:address_Id
表3.3 用户地址表
字段名字 含义 数据类型 大小 主键 可以为空 备注
address_Id 收货地址编号 INTEGER 10 Pk N 主键,自动递增
user_Id 用户ID INTEGER 10 Fk Y 外键
receive_Name 姓名 VARCHAR 20 Y
receive_Telephone 手机号 VARCHAR 15 N
address 地址 VARCHAR 20 Y
rec_Fixed_Phone 固定电话 VARCHAR 20 Y
rec_Postal_Code 邮编 CHAR 6 Y
is_Default 是否是默认 CHAR 1 Y 0:代表默认,1:表示不是默认
4.TB_Book图书表 主键:book_Id
表3.4 图书表
字段名字 含义 数据类型 大小 是否主键 是否可以为空 备注
book_Id 商品ID INTEGER 10 Pk N 自动递增
book_Name 书名字 VARCHAR 50 N
price 价格 DECIMAL 10 N 2位
author 作者 VARCHAR 30 N
publisher 出版社 VARCHAR 100 N
publish_Time 出版日期 DATE 10 Y 形如:2012-02-03
introduce 内容介绍 VARCHAR 1000 Y
author_Introduce 作者介绍 VARCHAR 1000 Y
book_Discount 折扣 DECIMAL 2 Y 小数点2位
comment_Stars 用户评价 CHAR 1 Y 默认为5
comment_Number 评价人数 INTEGER 10 Y 默认为0
category 图书分类 VARCHAR 30 N
pic_SYS_Name 书本图片 VARCHAR 50 Y
is_Sale 是否上架 CHAR 1 Y 默认为1,代表上架
stocks 库存 INTEGER 10 Y 默认为0
sales_Num 销售数量 INTEGER 10 Y 默认为0
5.TB_Order订单表 主键:order_Id
表3.5 订单表
字段名字 含义 数据类型 大小 是否主键 是否可以为空 备注
order_Id 订单编号 INTEGER 10 Pk N 自动递增
book_Name 书名 VARCHAR 50 N
order_Time 下单时间 TIMESTAMP 26 N 默认当前时间
book_Id 书本的Id INTEGER 10 Fk Y
single_Price 单价 DECIMAL 5 Y 小数点2位
book_Amount 数量 SMALLINT 5 Y
sumprice 总价 DECIMAL 5 Y 小数点2位
order_Status 订单状态 VARCHAR 20 Y 等待付款,已付款
user_Id 顾客编号 INTEGER 10 Fk Y
address_Id 地址ID INTEGER 10 Fk Y
pay_Style 付款方式 VARCHAR 20 Y 默认易付宝
6.TB_Comment评价表 主键:comment_Id
表3.6 评价表
字段名字 含义 数据类型 大小 是否主键 是否可以为空 备注
comment_Id 评价ID INTEGER 10 Pk N 自动递增
book_Id 图书ID INTEGER 10 Y
user_Id 用户ID INTEGER 10 Y
comment_Time 评价时间 TIMESTAMP 26 N 默认当前时间
content 评价内容 VARCHAR 1000 Y
userful_Num 有用数目 INTEGER 10 Y 默认0
userless_Num 无用数目 INTEGER 10 Y 默认0
stars 评价分 CHAR 1 Y 默认5
7.TB_Manager管理员表 主键:manager_Id
表3.7 管理员表
字段名字 含义 数据类型 大小 是否主键 是否可以为空 备注
manager_Id 管理员ID 10 INTEGER Pk N 自动递增
mag_Card 工号 10 VARCHAR N
mag_Name 用户名 20 VARCHAR Y
mag_Password 密码 30 VARCHAR Y
authority 权限 30 VARCHAR Y
8.TB_SuNingPay易付宝表 主键:pay_Id
表3.8 易付宝表
字段名字 含义 数据类型 大小 是否主键 是否可以为空 备注
pay_Id 易付宝ID 10 INTEGER Pk N 自动递增
user_Id 客户的ID 10 INTEGER Y
pay_Name 账户名字 20 VARCHAR Y 惟一
pay_State 易付宝状态 20 VARCHAR Y 等待付款,已付款
pay_Balance 余额 12 DECIMAL Y 小数点2位
available 可用余额 12 DECIMAL Y 小数点2位
pay_Frozen 冻结余额 12 DECIMAL Y 小数点2位
四、详细设计与实现
(一) 基础框架搭建(SSH)
1.创建项目
打开Myeclipse8.6,新建web工程,命名为BookStore,点击完成。
2. 为项目添加Struts能力
1)右键点击项目,选择MyEclipse->Add Struts Capabilities,或者点击菜单栏中MyEclipse->Project Capabilities->Add Struts Capabilities。
2)选择struts2.1版本
3)点击下一步,选择Struts Core(核心库)和Struts 2 Spring(包含集成Spring插件)的两个最基本库,其他根据需要可以添加。
4)点击完成,添加后的项目多了一个Struts.xml(用于配置action),web.xml中添加了核心过滤器的配置。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.为项目添加Spring能力
1)右键点击项目,选择MyEclipse->Add Spring Capabilities,或者点击菜单栏中MyEclipse->Project Capabilities->Add Spring Capabilities。
2)选择Spring3.0版本,类库选择 Spring 3.0 AOP、Spring 3.0 Core、
Spring 3.0 Persistence Core、Spring 3.0 Persistence JDBC、Spring 3.0
Web 5个库,并勾选复制到本地WEB-INF/lib目录。
3)点击下一步,默认配置不需修改。
4)点击完成,查看添加Spring后的项目,增加了applicationContex.xml文件
4.为项目添加Hibernate能力
1)右键点击项目,选择MyEclipse->Add Hibernate Capabilities,或者点击菜单栏中MyEclipse->Project Capabilities->Add Hibernate Capabilities。
2)选择Hibernate3.3版本,如果要使用注记可选中启用annotation,但是会对后续自动生成实体类造成麻烦,不选就是用xml文件形式进行实体类映射,默认勾选Hibernate 3.3 Annotation & Entity Manager、Hibernate 3.3 Core Libraries两个类库,复制jar文件到本地WEB-INF/lib文件夹下。
3)点击下一步,选择使用Spring的配置文件applicationContext.xml,这样就不会生成hibernate.cfg.xml,生成与否看个人习惯。
4)点击下一步,选择已经存在的applicationContext.xml文件的位置以及创建sessionFactory的名字
5)下一步,选择已经建立好的数据库连接DB2
6)点击下一步,取消勾选,不生成HibernateSessionFactory类
7)点击完成,查看工程,applicationContext.xml文件中增加了数据库连接的配置,包括datasource和sessionFactory
5.配置数据源
在Myeclipse右上角选择Myeclipse Database Explorer,打开数据库管理视图。
在左侧的DB Browser点击右键,选择New...,打开Database Driver对话框。
在Database Driver对话框中按照配置选择数据库驱动。首先选择Driver
Template,在这里我们选择DB2,Driver Name是DB2,url:jdbc:db2://localhost:50000/BOOKS
Username:db2admin;password:db2admin
点击Add JARs添加数据库驱动文件。为方便配置,可以选择Save password保存密码,配置完毕后Finish即可。
6.搭建项目结构(分包)
1)创建包结构:
Action层(控制类): com.suning.bookstore.web.action
Service层(业务逻辑类): com.suning.bookstore.service
com.suning.bookstore.service.impl
Dao层(数据库访问): com.suning.bookstore.dao
com.suning.bookstore.dao.impl
实体类: com.suning.bookstore.persistence.entity
7.搭建项目结构(实体类、数据库访问)
自己构建entity和dao(采用注解的方式)
最后,总结一下系统的分层模式简而言之就是
(二) 界面设计与实现详情
1. JSP列表
表4.1 JSP列表
文件的名称 具体的功能介绍
user_index.jsp 入口界面的功能
login.jsp 用户登陆的页面功能
register.jsp 用户注册的页面功能
center_info.jsp 个人信息的页面功能
center_order.jsp 订单管理的页面功能
center_address.jsp 收获地址的页面功能
load_book_by_id.jsp 根据ID查看书籍的页面功能
pay_money.jsp 购物结算的页面功能
header.jsp 页眉模板的功能
personal_center.jsp 用户个人中心的功能
add_book.jsp 增加书籍信息的页面功能
manager_index.jsp 管理员的页面功能
bookdetailin.jsp 用户登录后数据列表的页面功能
list_book_byPage.jsp 图书管理的页面功能
left.jsp 管理员页面左面的页面功能
right.jsp 管理员页面右面的页面功能
load_single.book.jsp 图书管理单本书页面的功能
top.jsp 管理员页面上面的功能
managerLogin.jsp 管理员登陆界面
2.Action列表
负责数据的处理的java类
表4.2 Action列表
文件的名称 具体的功能介绍
AddBookServlet.java 添加图书的Action
AddressAction.java 收获地址的Action
BookAction.java 用户退出的Action
DelegatingServletProxy.java 用户注册的Action
ListTopBookAction.java 列出评价人数的Action
LoginAction.java 用户登陆的Action
OrderAction.java 订单的Action
PayMoneyAction.java 付款的Action
RegisterAction.java 用户注册的Action
SuNingAction.java 易付宝的Action
ManagerLoginAction.java 管理员登录的Action
3.数据Hibernate部分的设计
表4.3 数据Hibernate列表
文件的名称 具体的功能介绍
Hibernate.cft.xml 代表数据库的整体配置文件
4.DAO接口列表
DAO就是Database Access Object,数据库访问对象
为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中
表4.4 DAO接口列表
文件的名称 具体的功能介绍
com.suning.bookstore.dao.AddressDAO.java 收获地址的DAO的接口
com.suning.bookstore.dao.BookDao.java 图书的DAO的接口
com.suning.bookstore.dao.LoginDao.java 用户登录DAO的接口
com.suning.bookstore.dao.OrderDao.java 订单的DAO的接口
com.suning.bookstore.dao.RegisterDao.java 注册DAO的接口
com.suning.bookstore.dao.SuNingPayDao.java 易付宝DAO的接口
com.suning.bookstore.dao.RegisterDao.java 注册DAO的接口
com.suning.bookstore.dao.SuNingPayDao.java 易付宝DAO的接口
com.suning.bookstore.dao.ManagerLoginDao.java 管理员登录DAO的接口
5.DAO实现列表
表4.5 DAO实现列表
文件的名称 具体的功能介绍
com.suning.bookstore.dao.impl.BookDaoImpl.java 图书DAO的实现
com.suning.bookstore.dao.impl.AddressDaoImpl.java 收获地址的DAO的实现
com.suning.bookstore.dao.impl.LoginDaoImpl.java 用户登录DAO的实现
com.suning.bookstore.dao.impl.OrderDaoImpl.java 订单的DAO的实现
com.suning.bookstore.dao.impl.RegisterDaoImpl.java 注册的DAO的实现
com.suning.bookstore.dao.impl.SuNingPayDaoImpl.java 易付宝DAO的实现
com.suning.bookstore.dao.ManagerLoginDaoImpl.java 管理员登录DAO的实现
6.中间业务层Spring部分的设计
表4.6 Service接口列表
文件的名称 具体的功能介绍
com.suning.bookstore.service.AddressService.java 收获地址的接口
com.suning.bookstore.service.BookService.java 图书的接口
com.suning.bookstore.service.LoginService.java 用户登录的接口
com.suning.bookstore.service.OrderService.java 订单的接口
com.suning.bookstore.service.RegisterService.java 注册的接口
com.suning.bookstore.service.SuNingPayService.java 易付宝的接口
com.suning.bookstore.service.ManagerLoginService.java 管理员登录的接口
表4.7 Service实现类列表
文件的名称 具体的功能介绍
com.suning.bookstore.service.impl.AddressServiceImpl.java 收货地址的实现
com.suning.bookstore.service.impl.BookServiceImpl.java 图书的实现
com.suning.bookstore.service.impl.LoginServiceImpl.java 用户登录的实现
com.suning.bookstore.service.impl.OrderServiceImpl.java 订单的实现
com.suning.bookstore.service.impl.RegisterServiceImpl.java 注册的实现
com.suning.bookstore.service.impl.SuNingPayServiceImpl.java 易付宝的实现
com.suning.bookstore.service.impl.ManagerLoginServiceImpl.java 管理员登录界面
7.界面设计
(1)普通用户
普通用户进入网上书店的主页后只能浏览和查看网站书目信息无法进行其他操作。
A.首页设计
在首页上的热销书榜,是根据数据库中评价人数最多的挑选出来的。
用户只有进行注册,并填写了收货地址才能进行图书的购买。
点击“用户注册”将出现注册页面,输入相应信息,如果格式不符合要求将出现相应提示。
注册成功后,点击“登录”出现登录网页,输入用户名密码点击“登录”
出现登陆后的欢迎语。
然后可以点击购买,进行购书。
B.注册页面
注册时,需要检查数据库中是否有重复用户名,若有的话,页面提示“此用户已注册” 同时检测邮箱是否符合标准,密码的长度是否超过5位。
C.登录界面
为了检验用户是否合法,所以需要输入用户名和密码来验证用户的合法性,用户登录模块刚好完成这样的一个功能。需要设计一个表单让用户输入信息。登陆成功后,跳到首页,并在首页显示 “XX欢迎你”的字样。
D.收获地址填写
在此页面中,填写收获人信息:收获人姓名,手机号码,地址,邮箱等信息。最后在页面上显示一个表格,里面信息有地址编号,用户编号,收获人姓名,手机号码,固定号码,邮政编码,是否默认,删除,编辑。
E.购书功能模块
在此页面中,可以看到图书的各种信息:图片,书名,价格,图书描述,作者,出版社,出版日期,作者描述,评级,评级人数,打折情况,库存,是否上架。
点击“确认购买”购书订单下单成功。
F.购物车-我的订单界面
在此页面中,有订单状态:等待付款,已付款。
G.易付宝激活页面
初次购买图书时,易付宝是必须要激活的,输入易付宝账号,点击激活,此时账户余额为0,这是我采用的是后台给予充值,刷新后,点击确认支付,页面跳转到我的订单,此时订单状态变为已支付。
(2)管理员
A.管理员登录界面
为了检验用户是否合法,所以需要输入用户名和密码来验证用户的合法性,管理员登录模块刚好完成这样的一个功能。需要设计一个表单让管理员输入信息。登陆成功后,跳到管理员首页。
B.管理员添加图书页面
点击“添加”将可以添加图书信息,输入相应信息后点击“提交”
C.书本操作页面
在此页面中用户可以看到数据库中每一本书的详细介绍,并可以对每一本书进行删除,编辑。
参考文献
[1] 萨日娜,《蒙古文远程教育平台中网上书店和课件系统的研究与实现》, 《内蒙古大学》 2009
[2] 陈光,《基于Java网上系统的研究与设计》,《信息技术》 2010年3期
[3] 李云, 《基于BS的水库优化调度系统的设计与实现》,《华中科技大学 华中科技大学》 2009
[4] 王莉等,《基于Struts和Hibernate的缺陷管理及度量系统》,《计算机应用与软件》 2009年2期
[5] 廖胜军,《基于SSH整合架构的应用研究》,《武汉理工大学》 2008
[6] 刘世贵等,《基于JavaEE多层软件架构的研究与实现》,《软件导刊》 2010年8期
[7] 宋峻,《浅议电子商务与现代物流协同发展对策》,《中国电子商务》 2011年3期
[8] 张兴科,《基于J2EE的框架技术研究与应用》,《计算机与数字工程》2011年39卷6期
[9] 卢卫杰,《基于轻量级J2EE框架的WEB信息系统的研究和应用》,《长春理工大学》 2008
[10] 马兰,《采用MVC模式的内容管理系统的设计与实现》,《科技信息》2011年12期
[11] 张烨等,《基于Struts+Spring+Hibernate的高校学生管理系统的设计与实现》,《电子设计工程》 2011年19卷11期
[12] 吴茂昌,《基于.NET平台分层架构的研究》,《武汉科技大学 武汉科技大学》 2010
[13] 刘霜霜,《Java EE应用中权限系统的研究与实现》,《湖南大学》 2011
[14] 陈莉,《基于Struts2框架的应用研究》,《湖北工业大学》 2008
[15] 郭子南,《轻量级架构及其安全控制的研究及其应用》,《大连交通大学》 2008
[16] 邵刚,《基于Spring框架的MVC控制器的优化与改进》,《山东大学》 2011
[17] 万伟韬等,《无纸化考试系统中Struts,Spring,Hibernate框架整合的分析与研究》,《江西教育学院学报》 2011年32卷3期
[18] 叶攀,《基于J2EE的WebGIS数字化校园研究及应用--以西南大学为例》,《西南大学》 2011
[19] 东方人华.Dreamweaver MX 2004中文版,北京:清华人学出版社
[20] 齐治昌,谭庆平,宁洪,《软件工程》,高等教育出版社
[21] 郑红强,《基于BS结构的远程监控平台的设计与实现》,《北京邮电大学 北京邮电大学》 2010
[22] 张伟, 《基于Web Services的航材保障系统的开发与研究》,《西安工业大学》2009
[23] 叶攀,《基于J2EE的WebGIS数字化校园研究及应用--以西南大学为例》,《西南大学》 2011
[24]百度百科
|