基于MVC网上购物系统的毕业论文

更新时间:2024-06-30 19:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JIANGSU UNIVERSITY OF TECHNOLOGY

本科毕业设计(论文)

苏宁易购销售网站的设计与实现

学院名称: XXXXX 专 业: 软件工程 班 级: XXXX 学 号: XXXX 姓 名: XXXX 指导教师姓名: XXXXX 指导教师职称: 讲 师

二〇一三 年 六 月

苏宁易购销售网站的设计与实现

摘 要:随着网络技术和应用需求的发展许多网站建立了电子商务平台,网上购物系

统是电子商务的一个重要的应用,由于网上购物系统拥有方便快捷、投资小、回收快、不受地理位置影响等一系列优点,它已成为研究与应用的热点,本系统就是在客户需求的基础上建立了苏宁易购的销售网站系统。

本系统便是尝试用JSP在网络上架构一个动态的电子商务网站,它是在Windows XP下,以Oracle为数据库开发平台,Tomcat网络信息服务作为应用服务器,采用MVC模式开发的网上购物系统。它分前台部分和后台部分,前台主要包括用户注册、商品浏览、购物车管理、订单管理、个人资料管理模块;后台主要包括商品管理、订单处理、用户信息管理模块。

关键词:Servlet,JSP,MVC,网上购物系统

1

Design and implementation of Suningyi purchase sales site

Abstract: With the development of network technology and application needs many

e-commerce website platform, online shopping system is an important application of e-commerce, the online shopping system has convenient, small investment, quick recovery, less affected by the location and a series of advantages, it has become the hotspot of research and application, the system is based on the needs of the customers established sales website system Suningyi purchase.

The system is the electronic commerce website try in a dynamic network architecture with JSP, which is in Windows XP, with Oracle database development platform, Tomcat network information services as application servers, using MVC online shopping system development model. It is divided into the front part and back part, the onstage mainly includes the user registration, product browsing, shopping cart management, order management, personal information management module; the backstage mainly includes the commodity management, order processing, user information management module.

Keywords: Servlet, JSP, MVC, online shopping system

2

目录

前言 ...................................................................................................................................................................... 1 第1章 绪论 .................................................................................................................................................... 2

1.1开发背景 ............................................................................................................................................. 2 1.2 研究目的 ........................................................................................................................................... 3

第2章 相关技术简介 ............................................................................................................................... 4

2.1 JSP技术 ............................................................................................................................................. 4 2.2 JDBC技术 .......................................................................................................................................... 5 2.3 MVC模式 ............................................................................................................................................. 6 2.4 MyEclipse简介 ............................................................................................................................... 6 2.5 Oracle简介 ...................................................................................................................................... 7

第3章 总体设计 ......................................................................................................................................... 9

3.1需求分析 ............................................................................................................................................. 9 3.2 功能模块设计 ................................................................................................................................ 10

3.2.1前台功能模块设计 ........................................................................................................ 10 3.2.2后台功能模块设计 ........................................................................................................ 11 3.3 数据库设计 ..................................................................................................................................... 12

3.3.1 E-R图 ............................................................................................................................... 12 3.3.2数据库表设计 ................................................................................................................. 14

第4章 详细设计 ....................................................................................................................................... 18

4.1创建与数据库的连接 .................................................................................................................... 18 4.2前台功能的设计和实现 ............................................................................................................... 18

4.2.1用户管理模块 ................................................................................................................. 18 4.2.2商品管理模块 ................................................................................................................. 22

I

4.2.3购物车管理模块............................................................................................................. 24 4.2.4订单管理模块 ................................................................................................................. 25 4.3 后台功能的设计与实现 .............................................................................................................. 26

4.3.1管理员登录模块............................................................................................................. 26 4.3.2用户查询模块 ................................................................................................................. 27 4.3.3商品管理模块 ................................................................................................................. 28 4.3.4订单管理模块 ................................................................................................................. 30

第5章 结束语 ............................................................................................................................................. 32 参考文献 .......................................................................................................................................................... 33 致谢 .................................................................................................................................................................... 34

II

2.3 MVC模式

本系统中使用MVC模式来降低耦合度,实现分层思想。其中Model层实现系统中的业务逻辑,由JavaBean来实现,View层用于与用户的交互,用JSP来实现,Controller层是M odel与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,本系统中是用servlet来实现的。

MVC全名是Model View Controller,是模型(model)、视图(view)、控制器(controll er)的缩写,一种软件设计典范,用于组织代码,用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑,MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中[5]。

视图是用户看到并与之交互的界面。对老式的Web应用程序来说 ,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML、XML/XSL、WML等一些标识语言和Web services。MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务,例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性[6]。

控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

2.4 MyEclipse简介

本系统是在MyEclipse上进行开发的,MyEclipse从本质上讲是基于Eclipse的JavaEE方面的插件,是专门为方便JavaEE项目的开发设计的。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclip目前支持Java Servlet、AJAX、

第 6 页 共 34页

JSP、JSF、 Struts、Spring、Hibernate、EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。本系统用的是Myeclipse8.5版本,Genuitec发布了MyEclipse Enterprise Workbench 5.0,更智能、更快捷、更简单和更便宜的J2EE工具的新版本的诞生。它的价格对于个人和企业开发人员来说都是非常有吸引力的。这是J2EE IDE市场一个重量级的选手。通过增加UML双向建模工具、WYSIWYG的JSP/Strutsdesigner、可视化的Hibernate/ORM工具、Spring和Web services支持,以及新的Oracle数据库开发,MyEclipse 5.0继续为业界提供全面的产品[7]。

由于MyEclipse自带的jdk不全面,而且不能更新,所以在oracle官网中下载了jdk1.6.0_23,然后在MyEclipse中配置jdk,点击window下的Preferences,接着点击下面Java下的Installed JREs,点击add,最后还要设定环境变量path,JAVA_HOME。Path变量针对Java的具体含义是系统在任何路径下都可以识别Java命令需要设置的变量。JAVA_HOME变量就是java的安装路径。

2.5 Oracle简介

本系统使用的数据库是oracle,采用pl/sql工具建了5张表以及一个序列,该序列名称是T_SPXX_SPBH,PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。不过,一般的中小型企业都比较喜欢用mysql、SQL server等数据库系统,它的操作很简单,功能也比较齐全。只是相对于oracle数据库而言,在处理大量数据方面有些不如,oraclede的稳定性比sqlserver好,安全性也比sqlserver好,获得最高认证级别ISO的认证,oracle具有开放性,sqlserver只能在windows上运行[8]。

oracle简称甲骨文,是仅次于微软公司的世界第二大软件公司,该公司名称就叫oracl e。oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等领域有着非常广泛的应用。因其在数据安全性与数据完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力,使得越来越多的用户将oracle作为其应用数据的处理系统。oracle数据库是基于“客户端/服务器”模式结构。客户端应用程序执行与用户进行交互的活动。其接收用户信息,并向服务器端发送请求。服务器系统负责管理数据信息和各种操作数据的活动。

第 7 页 共 34页

oracle数据库将权限划分为系统权限和对象权限两大类。系统权限是当前用户对数据库的操作权限,对象权限是当前用户对其他用户创建的数据库对象的访问权限。数据库对象有表、约束、索引、序列、触发器等等。实际Oracle的数据库对象是存放在一个叫做”方案”的逻辑空间内的。当前用户创建的数据库对象都放在当前用户的方案下,在用户创建的时候Oracle数据库会自动的为该用户创建一个与用户名相同的方案名。oracle创建表的规则:表名是由字母、数字、$、#、_组成 ,数字不能开头,长度不能超过30字符,大小写不敏感。一般情况下表名用大写来显示,不建议使用中文, 不能使用Oracle中的关键字。如该系统中的用户表名是T_YH,要注意的是如果需要访问其他的oracle数据库必须要配置tnsnames.ora在oracle的安装目录下的NETWORK/ADMIN/下,然后打开tnsnames.ora,把SERVICE_NAME = orcl中的orcl改成你要访问的那个数据库名称。

本系统要能正常使用数据库的前提是必须把服务(OracleServiceORC)和监听器(OracleOraDb10g_home1TNSListener)开启,建议把它们改成手动,这样不影响开机速度。

第 8 页 共 34页

第3章 总体设计

3.1 需求分析

商务系统随着中国经济的高速发展发生了巨大的变化。专做营销的中小型企业随着百姓个人消费水平的增长迅速成长起来,但同时也带来了这一行业激烈的竞争。如今的网站已经不单单是把企业想要表达的内容拜访在网站上那么简单,设计包含了更多的元素,例如css样式、jsp页面,给予浏览者更多的视觉享受。现在企业营销商需要用一些更新颖更有效的方式增强竞争力。建设一个宣传自身商品形象的电子商务营销模式的网站是一种有效的方法。另外,通过电子商务网站,广阔自己的营销方式和市场,能够帮助企业营销商从鱼龙混杂的市场中脱颖而出,完善企业销售与服务的环节,最终提升企业的价值与经济效益。苏宁也在建立起了属于自己的购物平台,本系统就是模拟苏宁易购网站实现的一个网上购物系统

[9]

。具有基本以下功能:

1.用户注册登陆功能:用户户根据注册模快要求进行邮箱注册,验证码的验证,手机号

是可选填的,注册后成功后完善自己的信息。

2.商品管理功能:该部分功能包括商品的管理和商品的浏览查询两大部分,将商品分成了日用、流行、新品、热销这4种状态,商品管理是面向管理员的,分商品增加、修改、查询,删除4个部分。面向用户的主要是商品的搜索,浏览功能,这里只支持精确查询。

3.购物车管理功能:商店用户在浏览商品时,可以根据自己愿意购买的商品加入到购物车,然后可以去结算或者继续购物,购买方式有两种,一键购和加入购物车,一键购是不需要加入购物车的,但是若要继续浏览其他商品可以选择先加入购物车,当进行结帐上时,购物车变为定单。

4.订单管理功能:订单管理分为面向管理员者和面向用户,管理员可以查询定单,修改定单以及删除订单,但是只能修改商品数量和商品总价格。用户可以查询订单状态,若此订单未付款,用户可以在此付款。

5.用户管理功能:此功能也分为两种面向管理员者和面向用户,用户可以对自己的信息进行修改,本系统有个默认的admin最大管理员,admin修改用户信息,注意的是不能修改用户密码,同时可以给用户授管理员权限,管理员可以查询所有用户,并有权删除。admin也可以新增其他管理员。

第 9 页 共 34页

3.2 功能模块设计

层次模块结构是将系统划分为若干子系统,子系统下再划分为若干的模块。而模块是指具备有输入输出、逻辑功能、运行程序和内部数据四种属性的一组程序。在结构化系统设计中,模块一般都是按功能划分的,通常称为功能模块。合理的功能模块的划分能够极大限度地减少重复劳动、提高开发工作的效率并增大系统的可维护性[10]。

以前面的需求分析为基础,将系统分为两大模块,即前台模块和后台模块。本系统的功能结构如图3-1所示。

网站

前台 后台

注册 登录 搜索商品 购物车 生成订单 用户管理 商品管理 订单管理 管理员新增 图3-1 系统功能结构图

3.2.1 前台功能模块设计

前台用户如需购买商品则需要先注册,为了系统的安全性考虑,在注册用户时要对邮箱格式进行了验证,还要校验两次密码输入是否相同,以及验证码是否输入正确,注册成功之后还要完善信息,完善的信息中包括昵称、真实姓名、性别、出生年月、证件类型、证件号码、居住地址。此时也要验证出生年月的格式和身份证的有效性,注册成功之后登录到首页面中,这时浏览商品了,将喜欢的商品选中加入购物车,可以查看购物车,修改商品数量,当总金额大于等于80时是免运费的,如果觉得这个商品不喜欢了可以删除购物车,购买购物车中的商品,即可以生成订单,也可以在订单管理里面查询到订单,订单状态为0的时候设置为未付款状态。如果没有登陆直接去主页面浏览商品的话,是不能加入购物车的,这是

第 10 页 共 34页

通过自己的用户名和密码登陆进去可以直接跳到刚刚浏览的那个页面,不需要再重新去查找商品了,这个是比较人性化的设计。为了方便登陆后台页面,在前台首页上放了一个超链接可以连到后台登陆的界面[11]。前台具体模块如图3-2所示。

登录

商品浏览

图3-2 前台功能结构图

订单查询

前台 修改资料 购物车

注册

3.2.2 后台功能模块设计

台后台管理员不能注册只能由默认的admin管理员新增,首先要对管理员账号和密码进行验证,登陆进去之后可以将所有的用户查询出来,这里支持模糊查询,可以修改用户信息,给用户设置是否有管理员权限,后台查询商品可以根据商品编号查询,也可以根据商品编号和商品名称同时查询,可以修改商品信息,删除掉的商品将在后台商品信息表中的商品状态置为0,还可以去查询订单,如果生成的订单没有付款则订单状态置为0,付款成功后置为1[12]。后台具体模块如图3-3所示。

第 11 页 共 34页

用户管理 管理员新增 修改用户 用户查询 删除用户 后台 商品管理 添加商品 商品查询 商品修改 商品删除 订单查询 订单管理 订单修改 订单删除 图3-3 后台功能结构图

3.3 数据库设计

在建设网站系统之前,必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。数据库的核心思想是构造数据库,建立数据库及相关的系统,满足各种需求。首先在设计数据库时要分离各个实体和表,一个实体对应一个表;同时要明确各实体间的关系,明确各实体的属性,以便确定它的字段。

3.3.1 E-R图

数据模型是现实世界中数据特征的抽象。数据模型应该满足三个方面要求,能够比较真实的模拟现实世界,容易为人所理解,便于计算及实现。E-R图为实体关系图,提供了表现实体型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体

[13]

第 12 页 共 34页

型、属性和联系。用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来[14]。

本系统中包括用户、管理员、商品、订单这几个实体。实体产生的行为有用户注册和登陆、用户资料修改、用户购买商品、商品的增删改查、订单的增删改查、管理员对用户的删除、修改。

商品实体具有商品编号、商品名称、尺码、商品状态、商品描述、商品类型、日用状态、热销状态、新品状态、流行状态、颜色、商品价格、商品数量、图片路径这些属性,商品信息实体图如图3-4所示。

商品状态 尺码 商品信息 流行状态 新品状态 热销状态 颜色 商品名称 商品编号 图片路径 商品数量 商品价格

商品描述 商品类型

日用状态 图3-4 商品信息实体图

订单实体具有订单状态、订单编码、配送方式、收货人、手机号码、电话、用户名、下单时间、结算金额、收货地址这些属性。它的实体图如3-5所示。

第 13 页 共 34页

结算金额 订单信息 收货人 收货地址 订单状态 订单编码 配送方式

用户名 下单时间 电话 手机号码

图3-5 订单明细实体图

3.3.2 数据库表设计

本系统数据库采用Oracle数据库,共包含用户表、用户信息表、商品信息表、订单主表和订单明细表这5张表。

用户表主要存放用户注册后而为进行完善信息的时候的数据的存放,用于前台注册。该表主要字段有用户名、密码、是否是管理员、用户状态,主键是用户名,用0和1作为判断,0代表不是管理员,不是用户,1代表是管理员,是用户[15]。如表3-1所示。

表3-1 用户表

列名 yhm mm sfsgly yhzt 数据类型 Varchar2(50) Varchar2(50) Number Number 是否为空 否 否 否 否 是否为主键 √ 描述 用户名 密码 是否是管理员 用户状态 用户信息表主要存放用户信息完善后的数据的存放,用于前台登记,后台用户管理。该表主要字段有用户名、邮箱、昵称、姓名、性别、出生年月、证件类型、证件号码、居住地址,主键是用户名,该表与用户表是以用户名关联的。如表3-2所示。

第 14 页 共 34页

表3-2 用户信息表

列名 yhm email nc xb xm csny zjlx zjhm jzdz 数据类型 Varchar2(50) Varchar2(50) Varchar2(50) Varchar2(50) Varchar(250) Date Varchar2(50) Varchar2(50) Varchar2(50) 是否为空 否 否 否 否 否 否 否 否 否 是否为主键 √ 描述 用户名 邮箱 昵称 姓名 性别 出生年月 证件类型 证件号码 居住地址 订单主表用于前台用户提交订单后的订单信息。该表主要字段有订单编码、商品名称、购买数量、商品总金额、订单状态、下单时间,其中订单编码是主键,订单状态用0和1表示,0表示该订单还未付款,1表示付款成功。如表3-3所示。

表3-3 订单主表

列名 ddbm spbh spsl spzje spzt xdsj 数据类型 Varchar2(50) Varchar2(50) Number Number Number Date 是否为空 否 否 否 否 否 否 是否为主键 √ 描述 订单编码 商品名称 购买数量 商品总金额 订单状态 下单时间 商品信息表用于前台商品详细信息的显示,用于后台商品信息的修改和删除。该表主要字段有商品编号、商品名称、商品价格、商品数量、颜色、尺码、款式、商品描述、热销状态、新品状态、流行状态、日用状态、商品状态、图片路径、商品类型,通过建立一个序列来生成商品编号,商品状态用0和1表示,0表示商品无效,当商品被删除是商品状态就为0。如表3-4所示。

订单明细表是与订单主表相关联的,该表用于后台管理员对订单的查询的数据的显示。

第 15 页 共 34页

该表主要字段有订单编码、配送方式、收货人、用户名、手机号码、电话、收货地址、订单状态、结算金额、下单时间。其中订单编码是主键。如表3-5所示。

表3-4 商品信息表

列名 spbh spmc spjg spsl ys cm ks spms rxzt xpzt lxzt ryzt spzt tplj splx 数据类型 Varchar2(50) Varchar2(50) Number(10,2) Integer Varchar2(50) Varchar2(50) Varchar2(50) Varchar2(500) Number Number Number Number Number Varchar2(100) Varchar2(50) 是否为空 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否

是否为主键 √ 描述 商品编号 商品名称 商品价格 商品数量 颜色 尺码 款式 商品描述 热销状态 新品状态 流行状态 日用状态 商品状态 图片路径 商品类型

第 16 页 共 34页

表3-5 订单明细表

列名 ddbm psfs shr yhm sjhm dh shdz ddzt xdsj jsje 数据类型 Varchar2(50) Varchar2(50) Varchar2(50) Varchar2(50) Number Number Varchar2(100) Number Date Number 是否为空 否 否 否 否 否 否 否 否 否 否 是否为主键 √ 描述 订单编码 配送方式 收货人 用户名 手机号码 电话 收货地址 订单状态 结算金额 下单时间

第 17 页 共 34页

第4章 详细设计

将系统分成前台和后台分成两个模块,各模块虽然是独立的,但又统一于同一数据库中,便于管理员管理维护数据库,同时也便于用户的操作。通过数据库连接,对后台数据进项增删改查,并把数据显示到前台页面上[16]。

4.1 创建与数据库的连接

在JSP中可以使用Java的JDBC技术,实现对数据库中表记录的查询、修改和删除等操作。JDBC技术在JSP中占有很重要的位置。JDBC(Java DataBase Connectivity)是Java数据库连接API。JDBC能完成三件事,第一是与一个数据库建立连接,第二是向数据库发送SQL语句,第三是处理数据库返回的结果。要先配置数据库连接的属性配置,配置驱动private String driver=\,配置url路径private String url = \,配置数据库的用户名private String user = \,配置数据库的密码private String password = \,定义配置文件存放路径private File pFile = new File(DataBaseOperate.class.getResource(\replaceAll(\,再定义一个全局连接的变量private Connection con = null和全局通道的变量private Statement state = null,通过Class.forName(driver)加载驱动,通过con = DriverManager.getConnection(url, user, password)建立连接,最后通过state = con.createStatement()创建通道[17]。

4.2 前台功能的设计和实现

前台主要实现了用户注册、用户登录、商品展示、购物车管理、生成订单等功能,采用ajax进行在js中向web服务器请求传递数据并接受数据[18]。

4.2.1 用户管理模块

用户在购买商品前一定要先登录,如果没有注册过则需先注册用户,然后才能浏览、购 买商品。注册时要验证邮箱地址,两次密码是否输入相同,验证码是否正确,还对密码强度进行了判断,手机号码是可选填的,使用了正则表达式[19]来验证邮箱格式和密码强度和手机

第 18 页 共 34页

号码,如果验证码看不清可以点击换一张,就是通过一个click事件,绑定一个事件处理函数,使用attr()方法设置被选元素的属性值。对这一系列的验证增强了系统的安全性,合理性。

用户注册界面如图4-1所示。

图4-1用户注册图

点击注册页面的提交注册按钮之后,会触发一个click事件,通过该按钮的id找到它绑定的函数,点击提交按钮之后要先把所有提示信息清空,然后进行一系列验证,定义了一个falg变量,设为true,如果flag等于true,则使用ajax的post方法请求后台servlet 类if(flag==true){$.post(\,{yxdz: $(\$(\,sjhm: $(\$(\,post向指定的资源提交要处理的数据。该servlet中创建了一个用户的对象RegistUser ru=new RegistUser(), 调用了RegistUser用户类中的ru.saveUserInfo(yxdz, mm,telephone)方法,执行sql语句String sql=\+email+\+password+ \将数据插入到后台数据库表中,定义一个funciton(data){}的函数,如果data等于0表示用户名存在,等于1表示验证码错误,等于2表示验证通过,然后根据if判断,根据id从页面中取得对应元素,将text的文本内容设置到该元素中。

页面中的验证码是定义了一个图形处理类YanZhengMaServlet 来处理的,首先设置http

第 19 页 共 34页

头信息,让页面知道这是一幅图片response.setContentType(\,然后取消图片的缓存response.setHeader(\\,接着再在内存中创建图片的缓冲区BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB ),定义一个画笔Graphics g=image.getGraphics(),最后定义一系列的画边框、背景、随机线、数字的方法,记得的数字放在session中存储以便登陆的时候验证HttpSession session = request.getSession(),session.setAttribute(\,接着调用dispose()方法结束绘画,最后借助于图形输出接口将内存中画的图片通过response中的输出通道向客户端页面输出ServletOutputStream responseOutputStream = response.getOutputStream(), ImageIO.write(image, \。

跳到注册成功之后的页面,点击点此完善超链接到完善信息的(addInformation.jsp)页面,该页面中要对出生日期格式和身份证进行验证,信息完善页面设计如图4-2所示。

图4-2 用户信息完善图

通过EL表达式${yxdz}取得注册的邮箱地址值,将它显示在信息完善页面中,是不可以修改的,然后同样采用上面的请求方式跳转到增加信息的Servlet,先通过request获取参数 值,判断身份证是否有效,定义一个变量flag,flag=0说明身份证号码正确,然后连接数据 库,执行Update更新语句String sql=\+nc+\+xm+\'\+xb+\+csny+\+zjlx+\+zjhm+\jzdz='\+jzdz+\+yhm+\。

信息完善之后就可以登录了,前台登录使用submit这个点击登录按钮触发的事件进行

第 20 页 共 34页

验证,用ajax的post方法请求后台checkLogin这个servlet,获取定义servlet中了两个变量flag和number,flag设为0,表示用户名不存在,1表示用户名存在密码错误,2表示验证通过3表示验证码错误,number设为0,0表示用户名不存在,1表示用户名存在密码错误,2表示验证通过,调用checkUser里面的find()方法,执行selcet语句,通过用户名查询数据库中对应的用户对象,通过验证获得num的值,返回到checkLogin,在进行if判断,得到flag的值。用户登录,登陆界面如图4-3所示。

图4-3 用户登陆图

前台登录使用submit这个点击登录按钮触发的事件,用ajax的post方法请求后台登陆检查checkLogin这个servlet,定义servlet中了两个变量flag和number,String flag=\,int number=0,flag设为0,表示用户名不存在,1表示用户名存在密码错误,2表示验证通过3表示验证码错误,number设为0,0表示用户名不存在,1表示用户名存在密码错误,2表示验证通过,调用检查用户checkUser类里面的find()方法,执行selcet查询语句,查询出来的结果以结果集返回,然后遍历结果集while(rs1.next()){num=2;}通过用户名查询数据库中对应的用户对象,通过验证获得num的值,返回到checkLogin,在进行if判断,得到flag的值。

number=checkUser.find(yhm, mm); if(!yzm1.equals(yzm2)){ flag=\

}else if(yzm1.equals(yzm2) && number==0){ flag=\

第 21 页 共 34页

}else if(yzm1.equals(yzm2) && number==1){ flag=\

}else if(yzm1.equals(yzm2) && number==2){ flag=\}

然后创建一个session,把用户明和密码放入session中,以备下一个页面进行提取应用HttpSession session=request.getSession(),session.setAttribute(\ion.setAttribute(\。

4.2.2 商品管理模块

进入主页面后,用户可以根据自己喜好浏览页面上的商品,通过无序列表实现了页面上的菜单功能,还可以根据商品名称进行搜索。商品显示页面如图4-4所示。

图4-4 商品显示图

前台页面qt_main.jsp中没有任何数据,是通过qt_main.js中的ajax获得数据的,$.getJSON(\跳到主页面图片的Servlet中,该类中定义一个map,里面放了四种商品,value是四种商品的list集合。

Map > map=new HashMap>(); map.put(\map.put(\map.put(\

第 22 页 共 34页

map.put(\

Gson gson=new Gson();//将map以json的格式返回到页面 out.print(gson.toJson(map));

通过ZYMTuPCl类中getRxlist()方法跳转的对应的热销产品的实现类中,再通过sql语句select * from t_spxx where rxzt=1 and rownum<=5查找到商品,然后循环遍历商品,把商品再放到list中。最后通过ajax循环变量商品信息并将商品输出到页面中。

for(var item in data){ if(item==\var rxsp=data[item];

for(var i=0;i

var str=\\

\元'/>\ $(\

将商品显示到主页面后,可以点击商品通过商品编号显示商品的具体信息,商品信息如图4-5所示。

图4-5 商品信息图

具体商品显示页面中的值是在js中取的,先定义一个临时商品变量tmpspbh,用ajax的get方式请求,当进入页面是加载ShowSpService这个Servlet,先获得从商品显示页面

第 23 页 共 34页

ShowSp.jsp传递过来的商品编号,根据商品编号从后台商品信息表中查询到这个商品编号的商品,创建一个商品的对象sp,把遍历的商品放入这个new的新对像中,先判断结果集是否为空,如果为空先遍历结果集rs.next(),再判断传递过来的商品是否为空,不为空的话将tmpspbh和sp进行比较,再把tmpspbh赋值给sp,最后将它以json格式输出到jsp页面中。$.get(\$(\ttr(\);$(\(\);},\

4.2.3 购物车管理模块

将商品具体信息显示出来之后就可以将商品加入购物车了,也可以选择一键购买,购物车页面如图4-6所示。

图4-6 购物车图

购物车原理是用session实现的,session里面放了一个list。加入购物车的流程是:先在showSp.js中用val()方法获取元素的值,定义一个String类型的变量var str =\spys=\+ spys;设置它的属性$(\).attr(\,str);跳转到加入购物车的那个Servlet,用request获取从页面传递过来的参数值,新建一个session,定义一个购物车cart,将其放入session中,将其转换成ShoopingCart。删除购物车要调用购物车实体类ShoopingCart里面的remoreSp()方法,若要展示购物车,先判断购物车是否为空,如果不为空则遍历返回的list。

第 24 页 共 34页

HttpSession session = request.getSession(false); //将cart转换成ShoopingCart类型

ShoopingCart cart = (ShoopingCart) session.getAttribute(\if(cart!=null && \删除购物车 cart.remoreSp(spbh);

if(cart.getCartList().size()==0){ session.removeAttribute(\}else{

session.setAttribute(\//使用重定向技术跳转跳到购物车页面

response.sendRedirect(\return;}

如果在没有登陆的前提下先浏览了商品,然后直接点击一键购买,是不能实现的,一般登陆之后就需要重新挑选商品,本系统中使用了一个action标志,来标记刚浏览过的商品,跳到登陆页面登陆之后会直接跳到刚刚浏览到的页面,不需要重新浏览了。var str=\\根据id获取到一键购买,然后对此元素的属性进行设置$(\。

4.2.4 订单管理模块

将商品加入购物车之后去结算,提交用户的一些信息,就可以提交订单将数据插入到后台订单明细表中,之后生成订单,订单页面如果4-7所示。

图4-7 订单查询图

点击删选按钮时,触发一个click事件,跳转到订单查询的那个servlet,获取页面传递

第 25 页 共 34页

过来的data2=$(\商品名称/定单号\值,根据商品名称或者订单编号进行精确删选,首先从session中获得登录用户名,并将其转换为String类型, if(request.getSession()!=null){yhm=(String)request.getSession().getAttribute(\hm\然后判断它是否存在,调用订单处理类里面的getIsGLY()方法判断是否是管理员,int isgly=ddcl.getIsGLY(yhm);然后判断该用户名是否是管理员,如果isgly等于0,说明使用户,则是前台订单查询。然后调用订单操作实现类里面的ddCxFy()方法,执行sql语句,遍历结果集,将订单放到list当中,最后匹配list当中的每一个元素,来执行function函数,判断该订单是否已经付款。

$.each(data.list,function(i,item){ var ddzt =\var cz = \if(item.ddzt==1){ ddzt=\已经付款\

cz =\评价\}else if(item.ddzt==0){ ddzt=\等待付款\

cz =\付款\}

4.3 后台功能的设计与实现

后台只有管理员才能登陆,管理员登陆进去之后对系统进行维护,管理员是不能注册的,只能由默认的admin新增。管理可以进行用户管理,商品管理和订单管理[20]。

4.3.1 管理员登录模块

每一个系统都是有后台的,是由后台管理员管理的,通过sql语句进行对后台数据库进行增删改查操作,后台管理员可以对系统的各个模块进行管理,后台管理员登陆页面如图4-8所示。

第 26 页 共 34页

图4-8 管理员登陆图

后台登陆使用form表单提交的方式跳转到登陆控制的那个serverLoginControl类中,,页面初始化时,调用init()方法,将焦点定位到帐号$(\).focus();账号,密码都不能为空,验证原理同前台是一样的。

4.3.2 用户查询模块

前台注册的用户可以在后台显示显示出来,管理可以对其进行查询、修改、删除,查询可以根据用户名查询,查询用户页面如图4-9所示。

图4-9 用户查询图

点击用户查询超链接时通过form表单进行提交,跳转到queryYH_ByYhmControl这个servlet,

list= queryYHService.QueryYH()获取用户对象的list,request.setAttribute(\再将list设置成一个元素,然后跳转到jsp页面,request.getRequestDispatcher(\,将元素list值返回页

第 27 页 共 34页

面forward(request,response)。

调用queryYHService中的QueryYH()查询方法,连接到后台数据库,执行sql语句select t_yhxx.*,t_yh.yhzt from t_yhxx,t_yh where t_yhxx.yhm=t_yh.yhm(+) and t_yh.YHZT=1,获取所有用户对象,放入list中,再通过request.setAttribute()方法放入名为list的变量中,通过request转发跳转到QueryYH.jsp页面中,进行用户list的遍历。

4.3.3 商品管理模块

要想实现购买必须前台要有商品才行,通过后台添加商品,把商品信息插入到后台数据库表中,商品添加的页面如图4-10所示。

图4-10 商品添加图

使是用JSTL标签添加商品,跳转到addSpglServlet中,从页面上取到尺码、款式、商品描述的值,通过addSp()放入商品的对象中。

第 28 页 共 34页

String cm = request.getParameter(\String ks = request.getParameter(\String spms = request.getParameter(\Spxx sp = new Spxx(); sp.setSpmc(spmc);

boolean flag = spgl.addSp(sp); request.setAttribute(\

request.getRequestDispatcher(\se);

添加成功之后跳转到querySpglServlet,从数据库查询相关商品信息,放入list中进行遍历。

商品添加成功之后跳出一个jsp页面,有两个超链接,点击查看商品,商品查询页面如图4-11所示。

图4-11 商品查询图

点击查询按钮时触发click事件,先判断商品编号不为空,调用函数跳转到商品查询的servlet,再调用商品信息实现类里面的fingSpxxById()方法,执行sql语句\* from T_SPXX where spzt =1 order by spbh查询到商品,根据商品状态和商品编号进行升序查询,把查询到的sql以参数返回到结果集中,遍历结果集,将商品放入一个list中,最后以json的格式返回到页面。

$(\

if($(\$.getJSON(\{spbh:$(\

第 29 页 共 34页

function(json){//回调

$(\将表格移除 $(\

$(\商品信息

序号商品编号商品名称商品价格商品数量颜色尺码款式热销状态新品状态流行状态日用状态图片路径商品类型商品描述操作\

$(\

son.spmc+\d>\+\json.splx+\et?spbh=\修改  \

$(\href='/SNYG/spgl/Spxx.jsp?operate=add' id='spzj'>继

续商品增加\

else{

alert(\商品编号为空,请重新输入\$(\

4.3.4 订单管理模块

前台生成订单之后可以在后台查询出来,如果已付款,这里的订单状态为1,否则为0,如果删除订单,删除之后订单状态改为2,可以根据商品名称或者订单编号进行模糊查询,订单查询的页面如图4-12所示。

图4-12 订单查询图

第 30 页 共 34页

进入js触发筛选的click事件,使用$.getJSON(\,{data1: data1,data2:data2}跳转到订单查询的servlet,用request获取从页面转递过来的值,调用订单操作类里面的ddCxFy()方法执行sql语句,从后台数据库表中查询数据,遍历结果集,最后把数据以json的格式返回。

while(rs.next()) { DingD dingD=new DingD();

dingD.setDdbh(rs.getString(\)); dingD.setSpmc(rs.getString(\)); dingD.setDdzt(rs.getInt(\)); list.add(dingD); }

第 31 页 共 34页

第5章 结束语

本系统前台主要实现了用户注册登录、根据不同的分类浏览商品,将自己看中的商品放进购物车,可以对购物车里面的商品数量进行修改,也可以删除购物车。后台主要实现了后台管理员登陆,商品管理、用户的管理、订单管理四大主要功能模块,可以及时对商品、客户信息进行查询修改添加删除。

本系统的优点是简洁明了,运行快捷,人性化的操作流程使管理员能够快速掌握本后台管理的操作上手容易,方便使用。运用MVC模式实现了网上购物功能,基本可以满足广大上网购物用户的需求。MVC开发模式中的三层各司其职,其中一层发生变化不会影响其他层,而且有利于责任分工,因此运用此模式开发相关系统可以提高工作效率。采用javabean技术减少了代码的重用,并且对每个操作后台系统会做出相应的判断,防止误操作的现象发生,保证了后台数据的安全性,确保了系统的安全性、合理性。另外还做了一些比较人性化的操作,比如用户未登录时查看的商品可以在用户登陆之后会直接显示出来,而不需要重新浏览,在购物车模块使用了金额大于等于80的时候是免运费的,还对购物的时间进行了设置,如果夜深了会提醒用户。

本系统主要缺点是界面不完美,过于简单了,系统还有一些功能不够完善。比如用户信息修改,应该先把用户的所有信息返回到修改页面上,然后去需要修改的地方进行修改即可。比如删除商品是做好有个提示框,提示是否删除以免删除错误。本系统虽然可以为用户及管理员提供一定的方便使用,但是由于现阶段的条件还不是很成熟,离实际应用还具有一定的差距,功能方面还有一些需要完善的地方,这些都是今后继续学习的目标,争取能够完善已经有的功能,增加新的功能,使本系统的发展更加成熟和完善。

第 32 页 共 34页

参考文献

[1] 邬妍. 一个网上购物系统的设计与实现[D]. 华中科技大学, 2009. [2] 刘海林. 网上购物系统的设计与实现[D]. 电子科技大学, 2010. [3] 奚嘉敏. 基于J2EE的网上购物系统的设计与实现[D]. 复旦大学, 2012. [4] 梁元栋. 基于JSP技术的电子商务网站设计与实现[D]. 华南理工大学, 2010. [5] 郝赫. 基于MVC模式的电子商城的设计与实现[D]. 吉林大学, 2010.

[6] 李国娟. 基于JavaEE架构的网上购物系统的设计与实现[D]. 河北工业大学, 2011. [7] 林行健. Oracle 10g数据库管理、应用与开发[M]. 清华大学出版社, 2005. [8] 顾春华, 张雪芹, 付歌. Web程序设计[M]. 华东理工大学出版社, 2006. [9] 叶佳丽. 中国电子商务发展现状及其面临的问题[J]. 商业经济, 2010. [10] 周建儒. JSP中自定义标签的实现与部署[J]. 科技信息(科学教研), 2008. [11] 罗幼平. 基于MVC模式的Web应用程序结构分析[J]. 软件导刊, 2009. [12] 胡雯. 利用JSON实现Ajax中数据传递[J]. 科技信息, 2009.

[13] 周建儒. JSP中自定义标签的实现与部署[J]. 科技信息(科学教研), 2008. [14] 廖彦华,罗小亮. 基于JSP技术的网上购物系统[J]. 电脑知识与技术, 2007. [15]徐卫英. 基于JavaScript的验证表单通用方案的设计与应用[J]. 计算机时代, 2010. [16] 熊亮春. PL/SQL在ORACLE数据库应用程序中的应用[J]. 江西广播电视大学学报,

2008.

[17] 史建成,李萍,王君霞,郑健. JavaBean在JSP开发中的两个典型运用[J]. 福建电脑,

2008.

[18] 伍德雁. Tomcat应用系统乱码问题研究[J]. 电脑知识与技术, 2008.

[19] Georges-Louis Baron,Eric Bruillard. ICT, educational technology and

educational instruments. Will what has worked work again elsewhere in the future?[J] .2007.

[20] Cassidy A. Information systems strategic planning[J]. Bocaraton.Flrida. St.

Luicepress, 2008.

第 33 页 共 34页

致谢

毕业设计是我们在大学期间最后的课程,是四年学习的一个总结,也是我们学习成果的具体体现。所以我们做毕业设计必须有一个良好的态度,认真地对待,只有这样才可以学到更多的专业知识,为将来的工作做好各个方面准备。

首先要感谢带我毕业设计的XXXX老师,我学的很多编程方面的知识都是他无私传授的。在毕业设计中遇到的问题,都能得到老师的悉心指导和帮助,常常在吃饭和下班的时间,老师继续为我们留在学校指导毕业设计。通过这次毕业设计我不但更深地掌握了软件工程方面的知识,更为重要地是也学到了做人做事应该所必要的素质,那就是余小军老师那种治学严谨、平易近人、无私奉献的精神。

其次要感谢我的同学和同事,感谢他们在毕业设计的过程中给我的帮助。没有他们的帮助,我也不可能很好地完成本次设计任务。同时感谢从我进入大学以来,学校所有在学习和生活方面对我关心的老师。

第 34 页 共 34页

本文来源:https://www.bwwdw.com/article/03u3.html

Top