基于Java web的购物商城系统设计与实现

目 录
1 绪 论 1
1.1 本课题研究的背景和意义 1
1.1.1 本课题研究的背景 1
1.1.2 本课题研究的意义 2
1.1.3 本课题的发展现状及前景 2
1.2 系统的实现任务 7
2 系统概述及实现技术介绍 8
2.1 网上商城简介 8
2.2 相关实现技术介绍 10
2.2.1 JSP语言及其特点 10
2.2.2 DreamweaverMX知识介绍 12
2.2.3 数据库基础知识介绍 13
2.2.4 JDBC基础知识介绍 15
2.3 系统的主要架构及开发模式 16
2.3.1 基于B/S的体系结构 16
2.3.2 基于MVC的应用开发模型 17
3 系统需求分析及可行性分析 19
3.1 需求分析 19
3.1.1 功能概述 19
3.2 可行性分析 20
4 总体设计 22
4.1 项目总体设计 22
4.1.1 设计思想 22
4.1.2 总体框架设计 22
4.2 数据库设计 23
4.2.1 数据库设计 23
4.2.2 JSP连接数据库 24
5 系统详细设计及实现 26
5.1 前台总体框架 26
5.1.1 用户管理模块 26
5.1.2 购物车模块 32
5.1.3 留言板模块 37
5.2 后台部分 39
5.2.1 后台总体框架 39
5.2.2 管理员登录 40
5.2.3 商品信息管理 41
5.2.4 用户信息管理 44
5.2.5 定单信息管理 46
6 系统测试 48
6.1 系统关键部分测试分析 48
6.1.1 单元测试分析 48
6.1.2 测试分析总结及说明 49
结束语 50
致谢 51
参考文献 52

1 绪 论
1.1 本课题研究的背景和意义
1.1.1 本课题研究的背景
近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。
网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。
目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。
采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。
首先,PHP缺乏规模支持。其次,缺乏多层结构支持。对于大负荷站点,解决方法只有一个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,组成二维阵列。而PHP则缺乏这种支持。还有上面提到过的一点,PHP提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。
ASP和JSP则没有以上缺陷,ASP可以通过MicrosoftWindowsd的COM/DCOM获得ActiveX规模支持,通过DCOM和TranscationServer获得结构支持;JSP可以通过SUNJava的JavaClass和EJB获得规模支持,通过EJB/CORBA以及众多厂商的ApplicationServer获得结构支持。
三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet的WebSphere;西方另外一个非常著名的电子商务软件提供商,Intershop。它原来的产品Intershop12,3,4占据了主要的电子商务软件份额。它们都是通过CGI来提供支持的。但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务ApplicationServer,而且声言不再开发传统软件。
总的来说,ASP,PHP,JSP三者都有相当数量的支持者,而这三者也各有所长,在开发过程中,我们应该根据实际的需要来使用最合适的技术,本系统则采用较新的JSP技术,一方面JSP的安全性和跨平台性比较好。
1.1.2 本课题研究的意义
Internet的发展,为改变传统的商业运作模式提供了一种技术上的可行性的方案:利用Internet的技术和协议,建立各种企业内部网Intranet,企业外部网Extranet,通过廉价的通讯手段,将买家与卖家、厂商和合作伙伴紧密结合在了一起,消除时间与空间带来的障碍,从而大大的节约了交易成本,扩大了交易范围。而在实际的生活中,这种方案已经被广泛的运用到了实际的商业活动中了,人们将这种交易模式称为:电子商务。
当今比较流行的网上购物系统国外有“淘宝(www.taobao.com)”,国内有“当当(www.dangdang.com)”。它们都是相当优秀的电子商务网站,对其他的网站提供了良好的典范。设计中可以学习参考他们的思想,了解和熟悉整个网站的开发流程及完整的电子商务网站应有的功能和注意事项。
设计和完成一个电子商务网站的,将会牵涉到许多技术上的问题,如:动态网页制作技术的,后台数据库的设计和管理,通过实际的制作一个网站,可以避免纸上谈兵,在实践中掌握上述技术的使用。
1.1.3本课题的发展现状及前景

  1. 电子商务发展现状
    以下是根据CNNIC(中国互联网络信息中心)公布的中国电子上午发展报告来进一步分析目前的网上购物的现状。(主要引用其中的分析图表)

图1-1 选择网上购物的原因
从上面的图可以看出选择网上购物节约时间和操作方便的分别占46.7%和44.2%,这说明随着生活节奏的加快,人们越来越希望拥有简单快捷的购物方式。

图1-2 用户选择商品配送的方式
从上面的图中可以看出人们总希望直接可以拿到物品,而不需要耽搁自己的时间,如果是送货上门,有可以当面检查所购的物品,这也表现出人们对厂商信誉的担忧。

1-3 用户认为目前网上交易存在的最大问题
从上面的图中可以看出目前两个最严重的问题是安全性和产品服务。
2) 电子商务的前景 
电子商务在我国来说还是一个新生事物。电子商务的产生将挑战人类到目前为止所形成的知识体系、法律体系、价值体系、社会组织体系。随着电子商务技术的发展,将会出现许多基于电子商务体系的新的知识体系、法律体系、价值体系、社会组织体系理论。比如在传统经济条件下的经济学,对于资源、商品、价值、社会必要劳动时间、商品交换的规律等等指导经济活动的规律都有一套成熟的理论和计算方法。这些理论在网络经济环境下,将不再适用。我们将无法用传统的经济学理论来揭示电子商务条件下的经济规律,代之而来的将是电子商务条件下的新的经济学。电子商务的发展要有新的经济理论来指导,电子商务的发展又推动了新经济理论的产生。可以预见,在不久的将来,将会建立起一套全新的电子商务理论体系。
长期以来形成的法律都是基于纸介质和有形物品的法律,这些法律在电子商务条件下的运用都遇到了无法克服的困难。大多数现行法律规定使用“书面的”、“经签字的”或“原始的”文件才具有法律效力,这便对现代通信手段的使用施加了某些限制或包含有限制的含义。国际上和国内已颁布的有关电子信息方面的法规(例如我国新的经济合同法,虽然提到了电子数据交换方面的文件具有法律效力),并未涉及电子商务的全部,使人们无法准确地把握以非传统的书面形式提供信息的法律性质和有效性,也无法完全相信电子支付的安全性。
电子商务独特的运作方式向现有的商务规范模式提出了技术、财务和交易安全等方面的重大挑战,没有法律规范的电子商务将难以正常发展。及时制定并出台相应的法律,鼓励、引导,维护电子商务沿着健康轨道发展,成为当前我国立法工作的一项重要任务。电子商务的发展对传统的法律体系提出了挑战,电子商务的发展将推动新的法律体系的建立,电子商务的发展又要靠新的法律体系来规范。
据预测,电子商务所引起的新型产业革命,将会在今后20-30年的时间内完成。这样电子商务革命自从诞生到完成也就是30-40年的时间,在完成的速度上大大快于前面的几次产业革命。在这次产业革命完成时,将会同时完成经济理论、法律理论的革命,将形成全新的电子商务经济学、电子商务法学、电子商务组织学等电子商务条件下的理论体系。
电子商务的技术发展
从电子商务的技术发展趋势看将有如下几个方面:
(1) 将出现面向对象整体的解决方案。这包括广泛采用计算机协同工作技术、依赖协同作业体系等(计算机协同工作将计算机技术、网络通信技术,多媒体技术以及各种社会科学紧密地结合起来,给人们提供一种全新的交流方式,包括工商、税务、银行、运输、商检、海关、外汇、保险、电信、认证等部门以及商城、商户、企业客户等单位按一定的规范与程序相互配合、相互衔接、协同工作、共同完成有关的电子商务活动);
(2) 将开发面向中小用户的解决方案(目前的电子商务平台大多是B2B电子商务解决方案,还没有好的面向小用户的电子商务平台);
(3) 将出现移动嵌入式可自动生成的电子商务技术。采用这种技术,可以在各个企业、部门和个人的计算机系统中自动生成可嵌入的电子商务小型系统;
(4) 将出现可定制的柔性电子商务系统。采用这种技术,用户可以对电子商务的应用提出的要求,运用该系统生成符合用户要求的可伸缩的柔性电子商务系统。
同时随着应用范围的扩大,也会不断地对电子商务提出新的技术要求,电子商务技术也可能会有现在无法预见的新发展。比如电子商务和新材料的结合,电子商务和生物工程技术结合,将会形成新的学科和新的应用等。
电子商务的应用发展
电子商务的应用无论是在国内还是在国处都是起步不久,即使开展最早的美国,也只有近十年的历史。这么短的时间,即使对于估计的这次产业革命完成的最短时间30-40年来说,也是比较短暂的,电子商务的应用远没有发掘出来。电子商务由于其经济效益显著,其前景必然广阔。它可以使企业增加经济效益;可以使默默无闻的小公司名扬天下;可以使大公司竞争力更强。总之可以使企业的TOC(Total Own ship Cost)大大降低。因此电子商务的发展速度惊人,增长迅猛(电子商务的发展基本上同Internet用户的发展同步,而Internet的发展速度在我国达250%,在全世界也达50%以上。)
具体来说,电子商务的应用发展出现了如下一些特点。
(1) 电子商务的深度将进一步拓展
目前受限于技术创新和应用水平,企业发展电子商务仍处于起步阶段。随着这两方面水平的提高以及其他相关技术的发展,电子商务将向纵深挺进,新一代的电子商务将浮出水面,取代目前简单地信托“网站+电子邮件”的方式。电子商务企业将从网上商店和门户的初级形态,过渡到将企业的核心业务流程、客户关系管理等都延伸到Internet上,使产品和服务更贴近用户需求。互动、实时成为企业信息交流的共同特点,网络成为企业资源计划、客户关系管理及供应链管理的中枢神经。企业将创建、形成新的价值链,把新、老、上、下游利益相关都联合起来,形成更高效的战略联盟,共同谋求更大的利益。
(2) 电子商务将向各行各业迅速渗透
电子商务的倡导者是世界的IT业的巨人IBM,HR,Microsoft,电子商务的实施首先是金融服务业(包括银行系统、股票买卖系统、保险系统还有图书销售的Amazon等服务业公司)中,接着是大型的跨国公司(如DELL、通用汽车,在我国尚无几家大型跨国公司的条件下,我国家电行业的巨人春兰、海尔、TCL等都积极推进电子商务计划)中,然后才是传统的加工制造业、零售企业和中小企业,从而实现电子商务对传统产业、零售业和中小企业的嫁接和改造。最后还要扩大到政府部门、军事部门、医疗卫生部门、教育部门等公用事业部门。目前电子商务在我国的情况是金融业已经全面开展,并不断地深入;其他的服务业尚未进入这一领域;大型企业刚刚开始进入,有待进一步的发展;其他应用目前还谈不上。今后的发展将是向这些行业不断的需要。而随着中国加入WTO,电子商务将渗透到国内的各行各业,这是我们国家必然的、唯一的选择,也是我国各行各业所能做出的必然的、唯一的选择,对中国的传统经济也是一个严峻挑战。
(3) 电子商务的地域范围将迅速扩大
电子商务技术起源于美国,美国在电子信息技术方面有独特的优势。美国之所以倡导电子商务活动免关税,是因为美国电子信息技术是美国经济的支柱,美国的电子信息技术几乎垄断了全球市场,而电子信息技术全的交易都非常适合于网上交易,如果全球的电子商务活动免关税,那就等于美国的电子信息技术可以获得一个无国界、无关税的全球市场。从这一点说美国不遗余力地推进电子商务,有其经济殖民和技术霸权的目的,各个国家不得不防备。但是喜欢也好、不喜欢也罢,正像当年的英国一样,无论你喜欢英语和蒸汽机也好,反对英语和蒸汽机也罢,英语和蒸汽机还是不以我们的意志为转移,蒸汽机在全世界普及、英语成为全世界的通用语言。这就是优胜劣汰、弱肉强食的国际竞争。正是看到这一点,所以在对待电子商务这件事物的态度上,发达国家也好,发展中国家也罢,没有一个国家消极抵制,而是你争我抢,争取在电子商务技术方面占有一定的优势(香港的数码港计划、马来西亚的超级多媒体走廊、新加坡的电子信息港计划正是各个国家和地区争夺电子商务制高点的产物),不被国际社会所淘汰。正是由于这样的争先恐后的竞争和各国政府的大力支持,电子商务将会迅速地从发达国家扩展到发展中国家包括最不发达的国家。
(4) 电子商务网站将会出现兼并热潮
首先是同类兼并,目前互联网上大大小小的网站有上千万,为数不少的网站,定位相同或相近,业务内容趋同(特别是在我国这种问题更为严重)。由于资源有限,最终胜出的只是名列前茅的网站。那些处于领先地们的电子商务在资源、品牌、客户规模等诸方面具有很大的优势。这些具备良好基础和发展前景的网站要发展,必然采取互补性收购策略,结成战略联盟。由于个性化、专业化是电子商务发展的两大趋势,而且每个网站在资源方面总是有限的,客户的需求又是全方位的,所以不同类型的网站以战略联盟的形式进行相互协作将成为必然趋势。
(5) 行业电子商务将成为下一代电子商务发展的主流
电子商务进入迅猛发展时期的典型特征是风险资金、网站定位等将从以往的“大而全”模式转向专业细分的行业商务门户。电子商务企业也必须进行认真的市场细分的研究,才能适应消费者对电子商务的不同需要。第一代的电子商务专注于内容,第二代专注于综合性电子商务,而下一代的行业电子商务将增值内容和商务平台紧密集成,充分发挥Internet在信息服务方面的优势,使电子商务真正进入实用阶段。
(6) 电子商务将催生EASP(e-commerce Application Service Provider)
电子商务是将来的主要商务交易模式,但对于国内为数众多的中小型企业来说,将面临如建设投入大、运营成本高、见效周期长、效果不理想、缺乏标准化的应用系统、软硬件需不断升级等一系列难题。有了e-ASP电子商务应用服务商,中小企业可以把上述问题转给他们解决,只专注于做好自己的产品和服务便可。 [1]
1.2系统的实现任务
现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划,注重每一个细小的环节。这样才能使得在电子交易时避免不必要错误发生。我们将使用HTML、JSP等技术来编辑网页,并运用JDBC技术把数据库和动态网页相关联。传统的管理信息系统信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本设计在实际应用中的解决方案是建立网站,以及自己的数据库,使得所需商品信息可以及时的保存、更新,可以更好的及时了解商品买卖的情况。
2
系统概述及实现技术介绍
2.1 网上商城简介
网上商城又名电子商务系统,电子商务源于英文ELECTRONICCOMMERCE,简写为EC。顾名思义,其内容包含两个方面,一是电子方式,二是商贸活动。电子商务指的是利用简单、快捷、低成本的电子通讯方式,买卖双方不谋面地进行各种商贸活动。
电子商务可以通过多种电子通讯方式来完成。简单的说,比如你通过打电话或发传真的方式来与客户进行商贸活动,似乎也可以称作为电子商务;但是,现在人们所探讨的电子商务主要是以EDI(电子数据交换)和INTERNET来完成的。尤其是随着INTERNET技术的日益成熟,电子商务真正的发展将是建立在INTERNET技术上的。所以也有人把电子商务简称为IC(INTERNETCOMMERCE)。
从贸易活动的角度分析,电子商务可以在多个环节实现,由此也可以将电子商务分为两个层次,较低层次的电子商务如电子商情、电子贸易、电子合同等;最完整的也是最高级的电子商务应该是利用INTENET网络能够进行全部的贸易活动,即在网上将信息流、商流、资金流和部分的物流完整地实现,也就是说,你可以从寻找客户开始,一直到洽谈、订货、在线付(收)款、开据电子发票以至到电子报关、电子纳税等通过INTERNET一气呵成。
作为一种新兴的商务类型,电子商务提供企业虚拟的全球性贸易环境,大大提高了商务活动的水平和服务质量。新型的商务通信通道其优越性是显而易见的,其优点包括:
(1) 大大提高了通信速度,尤其是国际范围内的通信速度。
(2) 节省了潜在开支,如电子邮件节省了通信邮费,而电子数据交换则大大节省了管理和人员环节的开销。
(3) 增加了客户和供货方的联系。如电子商务系统网络站点使得客户和供货方均能了解对方的最新数据。
(4) 提高了服务质量,能以一种快捷方便的方式提供企业及其产品的信息及客户所需的服务。
(5) 提供了交互式的销售渠道。使商家能及时得到市场反馈,改进本身的工作。
(6) 提供全天候的服务,即每年365天,每天24小时的服务。
(7) 最重要的一点是,电子商务增强了企业的竞争力。
在这里,我们要讨论的是关于网上商城的物流管理,物流电子化应是电子商务概念的组成部分。缺少了现代化的物流过程,电子商务过程就不完整。物流是电子商务中实现以“以顾客为中心”理念的最终保证,缺少了现代化的物流技术,电子商务给消费者带来的购物便捷等于零,消费者必然会转向他们认为更为安全的传统购物方式,那网上购物还有什么存在的必要?随着网络技术和电子技术的发展,电子中介作为一种工具被引入了生产、交换和消费中,人类进入了电子商务时代。在这个时代,人们做贸易的顺序并没有改变,还是要有交易前、交易中和交易后几个阶段,但进行交流和联系的工具变了,如从以前的纸面单证变为现在的电子单证。这个阶段的一个重要特点就是信息流发生了变化(电子化),更多地表现为票据资料的流动。此时的信息流处于一个极为重要的地位,它贯穿于商品交易过程的始终,在一个更高的位置对商品流通的整个过程进行控制,记录整个商务活动的流程,是分析物流、导向资金流、进行经营决策的重要依据。在电子商务时代,由于电子工具和网络通信技术的应用,使交易各方的时空距离几乎为零,有利地促进了信息流、商流、资金流、物流区“四流”的有机结合。对于某些可以通过网络传输的商品和服务,甚至可以做到“四流”的同步处理,例如通过上网浏览、查询、挑选、点击,用户可以完成对某一电子软件的整个购物过程。因此,条码技术(BarCode)、数据库技术(Database)、电子定货系统(EOS:ElectronicOrderingSystem)、电子数据交换(ElectronicDataInterchange,EDI)、快速反应(QuickResponse,QR)及有效的客户反映(EffectiveCustomerResponse,ECR)、企业资源计划(EnterpriseResourcePlanning,ERP)等技术与观念在我国的物流中将会得到普遍的应用。
我们的论题就是关于EOS系统在网上商城这种电子商务中的应用。
电子订货系统(ElectronicOrderingSystem简称EOS)是零售商、批发商、制造商运用电脑对订购商品进行全面管理的技术。它可以迅速准确地传递订货信息,掌握商品情报,构筑出一个不缺货、不出错、不延迟的进货、检货、补货系统。电子订货系统将批发、零售商场所发生的订货数据输入电脑,即刻通过电脑通讯网络连接的方式将资料传送至总公司、批发商、商品供货商或制造商处。因此,EOS能处理从新商品资料的说明直到会计结算等所有商品交易过程的作业,可以说EOS涵盖了整个商流。在网络技术迅速传播的今天,EOS成为现代化物流管理中的重要一环,它使得零库存得以实现。在信息大量流出、交易额和交易频率越来越高的现代化商业社会,零售业已没有很多的空间和时间用于存放货物。在要求供货商及时补足售出商品的数量且不能有缺货的前提下,必须采用EOS系统。EOS蕴含的丰富内容和先进的管理手段,使其在国际上得以广泛应用。EOS是许多零售商和供应商之间的整体运作系统,而不是单个零售店和单个供应商之间的系统。电子订货系统在零售商和供应商之间建立起了一条高速通道,使双方的信息及时得到沟通,使订货过程的周期大大缩短,既保障了商品的及时供应,又加速了资金的周转,实现了零库存战略。
进入电子商务的企业不一定会赚钱,但不进入电子商务的企业将来一定会被淘汰。正是这种对未来希望的认识,许多网上商城应运而生。网上商城与传统的商城相比有许多新特点:
(1) 书写电子化,传递数据化。尽可能采用无纸贸易,实现快速准确、双向式数据和信息交流,可借助非实时的电子邮件和实时的讨论组来了解商品市场和商品信息,提供异地交流的形式。
(2) 没有店面租金成本。网上商城只需一台连在网络上的服务器或租用部分网络服务器空间即可。
(3) 没有商品库存的压力。可将网上订单直接传递给出版社,出版社可实行零库存印刷。
(4) 便于收集读者信息,为读者提供个性化服务。根据读者浏览、购买的信息,分析读者的阅读兴趣,当读者再次访问时直接推荐有关商品或定期向其发送有关商品的电子邮件。
(5) 品种规模大,经营时间久,上架寿命长。一般传统的大型书城,商品品种不超过20万种,网上商城在理论上可有无限多的品种。“网络不打烊”,只要服务器工作正常,网友就能查到并订购商品,不受时间的限制。
实行无国界经营。只要知道域名,全世界都可访问,不受空间的限制。
2.2 相关实现技术介绍
2.2.1 JSP语言及其特点
在传统的网页HTML文件(.htm,.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。JSP页面看上去象标准的HTML和XML页面,并附带有JSP引擎能够处理和抽取的额外元件。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给用户。
程序片段可以操作数据库、重新定向网页以及发送E-mail等,这就是建立动态网站所需要的功能。
所有程序都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低。它基于强大的Java语言,具有良好的伸缩性,在网络数据库应用开发领域具有得天独厚的优势。
JSP技术在多个方面加速了动态Web页面的开发:

  1. 将内容的生成和显示进行分离
    使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
    在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
  2. 强调可重用的组件
    绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者EnterpriseJavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
  3. 采用标识简化页面开发
    Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServerPage技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
    通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
  4. JSP能提供所有Servlets功能
    与Servlets相比,JSP能提供所有Servlets功能,它比用Println书写和修改HTML更方便。可以更明确地进行分工,Web页面设计人员编写HTML,只需留出空间让Servlets程序员插入动态部分即可。JSP技术能够支持高度复杂的基于Web的应用。
  5. 健壮的存储管理和安全性
    由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为JavaServlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。
  6. 一次编写,各处运行
    作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。
    JavaBean简介:JavaBean是一种基于Java的软件组件,JavaBean和Active控件一样,可以通过封装业务逻辑建立一整套可重复利用的对象库。JSP对于在Web应用中集成JavaBean组件提供了完善的支持,这种支持不仅能缩短开发时间(可以直接利用经过测试和可信任的已有组件),避免重复开发,也为JSP应用带来了更多的可伸缩性。JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互及数据提取等。
    由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们关注。它的任务就是:一次编写,可以在任何地方执行,可以在任何地方重用。JavaBean组件可以在任何地方重用包括了可以在应用程序、其他组件、文档、Web站点和应用程序构造器工具等多种方案中再利用。
    为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构和细节问题,只需定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。[2]
    2.2.2 DreamweaverMX知识介绍
    Dreamweaver是网页制作者最熟悉的开发工具之一,功能强大,界面友好,本设计采用的MacromediaDreamweaverMX是一个最新的版本,它在建立动态网的应用方面带来了一个很大的推进。新增的强大功能包括:
  7. 直观的新工作区
    通过标记的文档窗口、可对接的面板组、可自定义的工具条和集成的文件浏览,节省宝贵的开发时间。
  8. 更加强大的模板
    为分发人员设置尖端的规则,以便在不影响站点设计的情况下输入内容。嵌套的模板支持更为自定义的布局控制,而可编辑和可选的地区则允许分发人员更加灵活地输入内容。
  9. 广泛的代码库
    使用预置的代码库创建插入和更新表单、记录集导航页和用户认证页。通过用现场数据填充设计视图来测试布局。
  10. 新服务器技术支持
    DreamweaverMX新增了对构建ColdFusionMX、ASP.NET和PHP网站的支持,以及对开发ASP、JSP和传统ColdFusion应用程序的支持。
  11. 帮助您起步的示例内容
    利用专业质量的、预置的布局和代码,包括站点结构、表单、可访问的模板和JavaScript客户机方交互功能。运用能够即时为动态站点、静态站点或ISP托管的站点配置站点信息的站点设置向导,快速创建新站点。
  12. XML和Web标准支持
    通过XML支持保持前沿领先优势,包括编辑、确认和导入纲要。轻易地自省ColdFusion、.NET和Java中基于XML的web服务。通过XHTML输出的默认创建及标准HTML到XHTML的简单转换,确保标准一致性。
  13. 改进的级联样式表2(CSS2)支持
    使用DreamweaverMX中改进的CSS渲染和设计工具,构建符合最新CSS标准的站点。DreamweaverMXCSS面板经过增强,可显示内外部定义的样式,并支持仅设计时间样式表。
  14. 高性能的新编码功能
    利用高性能的编码功能(如代码提示、标记编辑器、可扩展的颜色编码、标记选择器、代码片段和代码确认),更快地编写自己的代码。
  15. 辅助功能
    利用页面和站点的符合性检查功能、产品内含的参考内容及辅助功能有源创作模式,随时了解最新的美国法律和国际标准。
  16. 为ColdFusionMX开发而优化
    ColdFusion的初学者会发现站点向导、代码示例和参考材料很有帮助意义。而高级开发人员可以利用最新的ColdFusionMX功能,包括ColdFusion组件、web服务以及集成的调试和跟踪。[3-]
    2.2.3 数据库基础知识介绍
  17. 数据库模型
    模型是对现实世界的抽象。在数据库技术中,我们用模型的概念描述数据库的结构与语义,对现实世界进行抽象,表示实体类型及实体间联系的模型称为“数据模型”。
    目前广泛作用的数据模型可分为两种类型。一种是独立于计算机系统的模型,完全不涉及信息在系统中的表示,只是用来描述某个特定组织所关心的信息结构,这类模型称为“概念数据模型”。要领模型用于建立信息世界的数据模型,强调其语义表达功能,应该概念简单、清晰,易于用户理解,它是现实世界的第一层抽象,是用户和数据库设计人员之间进行交流的工具。另一种数据模型是直接面向数据库的逻辑结构,它是现实世界的第二层抽象。这类模型涉及到计算机系统和数据库管理系统,又称为“结构数据模型”。
  18. 层次模型
    用树型结构表示实体类型及实体间联系的数据模型。树的结点是记录类型,每个非根结点有且只有一个父结点。上一层记录类型和下一层记录类型间联系是1∶N联系。
    层次模型的特点是记录之间的联系通过指针实现,查询效率较高。但层次模型有两个缺点:一是只能表示1∶N联系,虽然有多种辅助手段实现了M∶N联系,但都较复杂,用户不易掌握,二是由于树型结构层次顺序的严格和复杂,引起数据的查询和更新操作也很复杂,因此,编写应用程序也很复杂。
  19. 网状模型
    用有向图结构表示实体类型及实体间联系的数据模型。有向图中的结点是记录类型,有向边表示从箭尾一端的记录类型到箭头一端的记录类型间联系是1∶N联系。
    网状模型的特点:记录之间联系通过指针实现,M∶N联系也容易实现(每个M∶N联系可拆成两个1∶N联系),查询效率较高。网状模型的缺点是编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。
  20. 关系模型
    关系模型的主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。
    关系模型和层次、网状模型的最大区别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。
    关系模型和网状、层次模型的最大区别是:关系模型用表格数据而不是通过指针链来表示和实现实体间联系。关系模型的数据结构简单、易懂。只需用简单的查询语句就可对数据库进行操作。
    关系模型是数学化的模型,可把表格看成一个集合,因此集合论、数理逻辑等知识可引入到关系模型中来。关系模型已是一个成熟的有前途的模型,已得到广泛应用。
  21. 面向对象模型
    面向对象模型能完整地描述现实世界的数据结构,具有丰富的表达能力,但模型相对较复杂,涉及的知识面也广,因此面向对象数据库尚未达到关系数据库那样的普及程度。
  22. 数据库体系结构
    数据库的体系结构分三级:内部级(internal),概念级(conceptual)和外部级(external)。这个三级结构有时也称为“三级模式结构”,或“数据抽象的三个级别”。虽然现在DBMS的产品多种多样,在不同的操作系统支持下工作,但是大多数系统在总的体系结构上都具有三级模式的结构特征。从某个角度看到的数据特性称为“数据视图”(dataview)。
    外部级最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。
    概念级涉及到所有用户的数据定义,是全局的数据视图。全局数据视图的描述称为“概念模式”。
    内部级最接近于物理存储设备,涉及到实际数据存储的结构。物理存储数据视图的描述称为“内模式”。
    数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。
    三级结构之间往往差别很大,为了实现这三个抽象级别的联系和转换,DBMS在三级结构之间提供两个层次的映象(mappings):外模式/模式映象,模式/内模式映象。此处模式是概念模式的简称。[4]
    2.2.4 JDBC基础知识介绍
    JDBC是Java的开发者—Sun的Javasoft公司制定的Java数据库连接(JavaDataBaseConnectivity)技术的简称,是为各种常用数据库提供无缝联接的技术。JDBC在Web和Internet应用程序中的作用和ODBC在Windows系列平台应用程序中的作用类似。ODBC(OpenDataBaseConnectivity),称为开放式数据库互联技术,是由Microsoft公司倡导并得到业界普遍响应的一门数据库连接技术,如果读者有使用ODBC编程的经验,就会发现JDBC与ODBC很类似。JDBC现在可以连接的数据库包括:xbase、Oracle、Sybase、Aceess以及Paradox等。
    如果用户是从事软件领域工作的,不可能没有听说过SQL(StructureQueryLanguage:结构化查询语言),它是一种标准化的关系型数据库访问语言。在SQL看来,数据库就是表的集合,其中包含了行和列。SQL标准虽然也还处在不断变革之中(任何一门标准如果已一成不变了,那只能说明这门学科已经停止发展了),但其基本内容相对稳定。JDBC定义了Java语言同SQL数据之间的程序设计接口。
    JDBC有一个非常独特的动态连接结构,它使得系统模块化。使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动器管理器、驱动器和数据源。
    JavaSoft公司开发了JDBCAPI,JDBCAPI是一个标准统一的SQL数据存取接口。JDBC在Internet中的作用与ODBC在Windows系列中的作用类似。它为Java程序提供了一个统一缝地操作各种数据库的接口,程序员编程时,可以不关心它所要操作的数据库是哪个厂家的产品,从而提高了软件的通用性,而且在Internet上确实无法预料你的用户想访问什么类型的数据库。只要系统上安装了正确的驱动器组,JDBC应用程序就可以访问其相关的数据。
    2.3 系统的主要架构及开发模式
    系统的建设关键在于其所使用的架构,而网上购物这种基于web的系统,传统的c/s架构已经不能满足大量用户的访问和操作,b/s基于浏览器的架构则是目前网络系统应用的主流,它将大量的数据处理工作交给服务器端来处理,客户端只用通过普通的IE浏览器即可访问系统,方便快捷而且利于系统的更新和维护,java语言在该方面更是得天独厚,j2ee规范的出现则使系统的开发更加规范,层次更加清楚,更利于对复杂事务的处理,而且在安全性方面也做的更好。基于mvc的开发流程则使开发过程更加清晰明了,利于做一些复杂的逻辑实现,从而节省了开发周期和开发成本。
    2.3.1 基于B/S的体系结构
    在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。B/S结构简化了客户机的工作,客户机上只需配置少量的客户端软件。服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。浏览器发出请求,而其余如数据请求、加工、结果返回以及动态网页生成等工作全部由WebServer完成。实际上B/S体系结构是把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由Web服务器单独组成一层来负担其任务,这样客户机的压力减轻了,把负荷分配给了Web服务器。这种三层体系结构如图2-1所示。

图2-1 B/S架构示意图
这种结构不仅把客户机从沉重的负担和不断对其提高的性能的要求中解放出来,也把技术维护人员从繁重的维护升级工作中解脱出来。由于客户机把事务处理逻辑部分分给了功能服务器,使客户机一下子“苗条”了许多,不再负责处理复杂计算和数据访问等关键事务,只负责显示部分,所以维护人员不再为程序的维护工作奔波于每个客户机之间,而把主要精力放在功能服务器上程序的更新工作。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。
2.3.2 基于MVC的应用开发模型
在传统的基于Web的应用系统中,例如ASP,CGI等,通常开发者将业务逻辑,数据逻辑、展示逻辑等混杂在一起,在同一个界面面里既进行后台数据库的访问和操作,同时还包含业务流程和页面表示。这样编写出来的程序,既不利于程序员对业务代码的调试,同时也不利于编辑人员进行交互页面的设计。同时系统也不具备可扩展性,当我们要在现有业务上进行扩展的时候,通常无法借助于现有的资源和应用,而只能够重新编写,大大增加了投资,延长了系统上线的时间,失去了竞争市场的优势。
在本网上购物系统中,将采用通行的MVC模式来构建应用。这种结构解决了前面所述的所有问题,在我们的应用集成网络中,通过企业级高端J2EE应用服务器实现MVC开发模型。MVC的逻辑图如下:

图2-2 应用服务器之上采用MVC开发的逻辑示意图

图2-3 MVC业务流程示意图
通过这种方案,我们可以迅速地实现整个业务,其优势和特点如下:
Model(模型)层:由EJB组件来实现,EJB将具体的业务封装在组件内部,具备安全、高性能、可重用等优秀的特征。
View(视图)层:由JSP、HTML组成。这一层次的特点是能够真实地展示和客户交互的界面,具备可描绘的功能。同时能够嵌套动态数据,可以进行动态页面的展示。同时可以方便地进行客户端的个性化定制。根据每个客户的需求来展示不同风格的界面。
Controller(控制器)层:是非常重要的一层,这一层是连接View和Model的纽带,同时也是将这两层进行最大限度分离的工具。通常由Servlet来实现,Servlet和JSP虽然同样都属于页面展示工具,但分属两层。主要在于JSP以脚本语言的形式存在,它的主要优势是进行动态数据的Web展示,而Servlet是一个完整的Java程序,进行业务的调用和流程的处理是它的长处。
通过这种模型的建立,我们的应用系统具备了非常好的性能和可扩展性。将业务组件和展示页面进行分离,并通过Controller来描述调用关系,一方面可以提高效率,另一方面也可以增加系统扩充的能力,使我们的系统可以进行最快速度的业务扩展,以满足不同用户、不同阶段、各种各样的业务需求。

3 系统需求分析及可行性分析
3.1 需求分析
网站建设和一般的信息系统建设相比,既有开发的共同特点,也有其特性,共性在网站建设必须从实际需要出发。按照系统开发的一般规律和方法从事开发工作,面特性体现在其开发过程还要加入人的艺术意思和构思,以便能够将网站办得生动活泼,富有生气。
网上商城即要体现出其信息丰富、检索方便、购物快捷等特点,又要注重人性化设计,符合人们日常的购物习惯,使用户感觉亲切,操作方便。
3.1.1 功能概述
首先对网站进行合理的定位,根据网站的定位来确定网站的整体风格。网上商城是一个面向所有消费者的大众化网站,所以在界面设计上要平易近人,网站布局要清楚,各种信息及功能要明显,操作功能要简捷、网站的颜色搭配要合理,各页面间颜色也要互相配合,衔接过渡。
另外,根据本系统要实现的功能,将网站划分两大部分,即前台用户系统和后台管理系统。
一般来说,一个网上商城由前台系统和后台系统构成。前台系统就是面向Internet上用户的网站。后台系统则是商城管理员对网站及其的信息进行管理和维护的系统。
前台用户系统是面向顾客的网站界面,它是顾客直接访问和进行购买活动的地方。前台系统功能安排要合理,根据网站的定位、用户群体,来决定前台系统功能设定。本系统前台包括新货货架、热点商品推荐、商品信息检索、会员中心、购物车和下定单处理这六部分的功能。
新货架:根据货物架的日期将最新上架部分的图展示给用户。
管理员可以通过次模块将新的商品展示给用户,同时也可以是管理员根据需要添加商品比如说有些商品在这段时期有很多客户购买,管理员则添加到新货架。
热点商品:根据商品的销售数量排序,将访问量最高的商品展示给用户。
用户通过次模块可以很快的了解的到哪些商品的是热销的商品,商品销售量大的说明此种商品客户都比较喜欢,或者此种商品的质量等比其他的商品好,有了这个模块用户就可以很快的了解到商品的销售排行。
商品信息检索:提供单条件检索和多条件模糊检索。
用户通过此模块可以根据自己的需要查询商品,商品信息查询主要分为商品名称查询,商品类别查询以及商品编号查询。以上几个方法可以使用户根据自己所知道的信息查询出自己所需的商品。这样可以加快客户购买的效率。
会员中心:包括会员注册的会员服务。
会员的特点是购买商品时有一定的优惠,比普通用户购买商品时价格要低。
购物车:保存并修改用户当前的购物信息。
购物车主要是将用户要购买的商品保存起来,并且在购物车中显示出来。
用户首先要成为网上商城的会员,然后在网站的选择商品并添加到购物车内,将商品全部放到购物车后,进行定单处理。下定单后网将更新数据库信息记录定单信息,确认后付款,网站收款后进行发货。购物流程图如下图3-1所示:

3-1 购物流程图
后台管理系统针对商店管理提供各种管理功能,因为一个商店的管理是一个十分复杂的过程,往往涉及许多不同的管理流程和系统。本系统作为网上商店,它应有一个自己的后台管理系统,用于完成网站管理商品信息、后台的订单管理(包括付款、发货、取消等)、会员信息管理、管理员信息管理等功能。
商品信息管理:是对商品数据的维护,添加新的货物信息入库。
信息管理主要对一些商品的信息进行更新,比如有些商品的价格需要调整,有些商品最近需要打折销售,通过此模块可以很快的实现。
会员信息管理:提供管理员对会员注册信息的修改及维护。
该模块用来完成对注册用户的浏览及删除功能,。如果用户蓄意性注册或在很长的时间内没有购买商品,管理员就可以将该用户删除。管理员还可以对用户信息加以更新。
管理员信息管理:包括修改管理员的口令,管理员退出管理登录。
管理员主要用来管理对商城的后台加以管理。
3.2 可行性分析
商业企业在运营过程中,经常会受到以下一些条件的限制:
(1) 产品的宣传受到限制,采购商或顾客只能通过上门咨询、电话沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且成本较高。
(2) 庞大的商业经济周转。
(3) 复杂的产品周转渠道。从看样品、谈价格到支付货款等一系列的产品周转渠道过于复杂,企业与顾客之间缺乏全面的沟通与快捷运营的平台。
(4) 商业企业中根据季节的变化,热销商品在销售高峰到来时货源紧张,业需要实时了解商品的销售情况,保证热销商品的要货满足率。
因此,企业需要重新认识市场、消费者以及自身市场定位,正确认识电子商务技术在企业中的重要地位,以少量的时间和资金建立企业信息门户网站并架设一定范围的商务网络,以此来制定长远发展战略,使企业与顾客间的经济活动变得更灵活、更主动。
4
总体设计
4.1 项目总体设计
4.1.1 设计思想
网上商城是一种全新的销售方式,随着互联的网普及,新技术的层出不穷,在线交易的安全性不断的提高,都为网上商城如雨后春笋般的发展奠定了良好的基础。由于商品这种商品易保存,配货方便,运输过程中安全性高,另外商品货物信息在网上可以比其它商品更容易直观真实地向用户展示,折扣率也较高,所以目前国内各大网上商城比较红火。
我们开发网上商城系统,首先要从客户角度出发,提供良好的用户界面,对网站的布局、功能的设计尽量采用人性化设计,使用户感觉亲切,在首先在视觉上引吸顾客。提供方便快捷操作功能,使无论什么知识水平的用户都能很快的对购物系统熟练使用。提供功能强大的检索系统,快速地检索到站内所有信息。能按着用户的要求快速准确的显示出所有商品信息,并且能够方便添加到购物车内。提高网站的安全性及信息的准备性,保证个人的购物信息的保密性,加强用户购物过程的安全性。提供对购物车内商品信息的修改,确认后下定单。提供安全的在线支付方式及全面及时的配货方式。
4.1.2 总体框架设计
电子商务系统是一个典型的JSP数据库开发应用程序,由前台商品展示及销售、后台管理2部分组成。

  1. 前台商品展示及销售:
    该部分主要包括特价商品、销售排行、购物车、会员管理、商品公告及查看购物车、商品查询等。
  2. 后台商品管理和用户管理:
    该部分主要对商城内的一些基础数据进行有效管理,包括商品管理、会员管理等。功能结构图如下:

图4-1 功能模块设计图
从图中可以看出,网上购物系统可以分为前台和后台两个部分,前台部分由用户使用,主要包括用户注册,用户登陆,购物车管理,查看购物车,订购商品,商品查询,6个模块;后台部分由管理员使用,主要包括管理员身份验证,商品信息管理,用户信息管理3个模块。
4.2 数据库设计
4.2.1 数据库设计
数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有MYSQL,SQLServer,Oracle等。我采用了SQLServer2005数据库管理系统,建立的数据库名为Shopping。整个系统功能需要以下数据项:
管理员:ID号、用户名、登陆密码。
管理员表4-1
字段 说明 数据类型 备注
Man_ID ID号 varchar(5) 不允许空
Man_name 管理员名称 varchar(15) 不允许空
Man_password 管理员密码 varchar(15) 不允许空
用户:用户名、登录密码、性别、联系地址、联系电话、用户类型。
用户表 4-1
字段 说明 数据类型 备注
Mem_name 用户名 varchar(16) 不允许空
Mem_password 用户密码 varchar(15) 不允许空
Mem_age 用户年龄 int 可以为空
Mem_sex 用户性别 varchar(5) 可以为空
Mem_addr 用户地址 varchar(20) 可以为空
Mem_type 用户类型 varchar(5) 不允许空
商品:商品编号、名称、价格、会员价、类型、简要描述。
商品表 4-2
字段 说明 类型 备注
Comm_ID 商品编号 Varchar(10) 不允许空
Comm_Name 商品名称 Varchar(10) 不允许空
Comm_Type 商品类型 Varchar(5) 不允许空
Comm_Price 商品价格 Int 不允许空
Comm_youhui 商品会员价格 Int 可以为空
Comm_Desc 商品描述 Varchar(20) 可以为空
商品定单表:编号、定单号、用户名、商品编号、商品名称、商品价格、购买数量。
商品定单表 4-3
字段 说明 类型 备注
Id 编号 Varchar(10) 不允许空
Order_id 定单号 Varchar(20) 不允许空
User_name 用户名 Varchar(15) 不允许空
Goods_id 商品编号 Varchar(5) 不允许空
Goods_name 商品价格 Varchar(10) 不允许空
Goods_price 购买数量 int 不允许空
用户定单表:编号、定单号、用户名、联系电话、邮政编码、通讯地址、备注、定单时间。
用户定单表 4-4
字段 说明 类型 备注
Id 编号 Varchar(10) 不允许空
Order_id 定单号 Varchar(20) 不允许空
User_name 用户名 Varchar(15) 不允许空
User_tel 联系电话 Varchar(10) 不允许空
User_post 邮政编码 Varchar(10) 可以为空
User_addr 通讯地址 Varchar(20) 可以为空
User_beizhu 备注 Varchar(20) 可以为空
User_date 定单时间 datetime 不允许空
4.2.2 JSP连接数据库
在本系统中,需要多次连接数据库,而且这种连接是一项很消耗资源的操作,因此,在本系统中对数据库连接的部分写成了一个.jsp文件。文件名为Condb.jsp,关键代码如下:
<%!
StringdriverName=”com.microsoft.sqlserver.jdbc.SQLServerDriver”;
StringdbURL=”jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Shopping”;
StringuserName=”sa”;//默认用户名
StringuserPwd=”123”;//密码
Connectionconn;
PreparedStatementpstmt=null;
ResultSetrs;
Stringsql=null;
try
{
Class.forName(driverName);//加载数据库驱动程序
conn=DriverManager.getConnection(dbURL,userName,userPwd);
}
catch(Exceptione)
{
e.printStackTrace();
}
%>[5]
5
系统详细设计及实现
5.1 前台总体框架
前台部分由用户使用,包括用户注册,购物车管理,个人资料管理等几个部分。

  1. 模块功能介绍
    用户管理:为了便于网站的管理,必须有一套完整的用户管理体系。该网站用户管理模块由用户注册,用户登陆,找回密码3部分组成。
    购物车:所选商品须通过购物车进行保存。
    商品展示:为了方便用户能很快的查找自己所需的商品,前台还具有全部商品查询,分类查询,特价销售商品,销售排行榜
  2. 前台文件构架
    购物网站的前台文件结构如图5-1所示。

5-1 网站前台首页的功能结构如图所示
5.1.1 用户管理模块
用户管理模块主要包括用户注册和登录2个部分。

  1. 用户注册模块

图5-2 注册流程图
当用户第一次登录时首先要注册,成为会员后,才可以购买物品。用户可以通过单击首页的注册按键来打开注册页面进行会员注册操作,用户注册页面的运行结果如图所示。

图5-3 注册页面
在点击提交注册按钮要进行相应条件的判断,比如用户类型,两次输入的密码必须相同且长度必须大于3小于10。关键代码如下:

[6]

为了便于管理网站对用户的管理,在index.htm用户注册页接收到的注册信息要经过严格的过滤,保证注册用户的唯一性,在提交表单后需要对数据表中的数据进行查询,如果没有找到,则在插入数据表时提示注册成功,否则提示用户以被站用,请重新注册,关键代码如下:
try
{
sql=”select Mem_Name from Member where Mem_Name=?”;
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,Username);
rs=pstmt.executeQuery();
if(rs.next())
{
%>
jsp:forwardpage=”zhuce.jsp”
<jsp:paramname=”warnning”value=”<%=warning%>”/>
</jsp:forward>
<%
}
else
{
sql=”insert into Member(Mem_name,Mem_password,Mem_age,Mem_sex,Mem_addr,Mem_type) values (?,?,?,?,?,?)”;
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,Username);
pstmt.setString(2,password);
pstmt.setString(3,age);
pstmt.setString(4,sex);
pstmt.setString(5,Address);
pstmt.setString(6,type);
pstmt.executeUpdate();
}
}
2) 用户登陆模块

图5-4 用户登陆流程图
用户登录窗口设置在首页上,主要用来接收用户输入的用户名和密码,并更新用户在网站中的状态信息。
在会员登录窗口中单击登录按纽后,系统将对用户名和密码进行验证,判断用户是否是已注册用户,如果已注册,则更新用户在网站中的状态,如果没有注册,则拒绝用户的登录操作,登录数据验证的程序代码如下:
request.setCharacterEncoding(“GB2312”);
String name=request.getParameter(“Username”);
String pass=request.getParameter(“Password”);
try
{
sql=”select Mem_Name from Member where Mem_Name=? and Mem_password=?”;
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setString(2,pass);
rs=pstmt.executeQuery();
if(rs.next())
{
String name1=rs.getString(1);
%>
jsp:forwardpage=”index.jsp”/
<%
}
else
{
%>
jsp:forwardpage=”index.jsp”
<jsp:paramname=”warning” value=”用户不存在,请注册使用!”/>
</jsp:forward>
<%
}
}
登陆成功后返回网站首页并在网站首页右上角显示用户名。关键代码如下:
<%
request.setCharacterEncoding(“GB2312”);
String name1=(String)session.getAttribute(“name”);//登陆的用户名
if(name1!=null)
{
%>

欢迎<%=(String)session.getAttribute(“name”)%>   修改个人信息     修改密码

<% } 5.1.2购物车模块 在超市购物,可以根据自己的需要将很多的物品挑选到购物车(篮)中。而在网上虚拟的购物商城中,通常都会采用一种被称做“购物车”的技术来模拟现实生活。这种技术用起来十分方便,不但可以随时添加、查看、修改、清空购物车中的内容,还可以随时去收银台结帐。购物流程图如下所示:

图5-5 购物流程图

  1. 添加购物车
    添加购物车就是把用户选中的商品放在购物车中。当用户在前台首页中单击商品展示区的“我要购买”按钮时,系统会将该商品的详细信息展示在查看物品清单页中,运行结果如下图:

图5-6 添加商品
2) 查看购物车
为了方便用户随时查看购物情况,在网站的首页加入了查看购物车链接,通过它可以将所选物品信息放入购物车中显示出来。查看购物车页面运行结果如下图:

图5-7 查看购物车
在购物车中用户可以看到自己选入购物车中的全部商品,用户可以在这个界面选择每个商品的购买数量,并且可以将不想要的商品删除。
try
{
res.setContentType(“text/html;charset=gbk”);
Dao dao=new Dao();
Comm_dataBean ub=new Comm_dataBean();
HttpSession hs=req.getSession(true);
ArrayList al=new ArrayList();
String Comm_id=req.getParameter(“Comm_id”);
if(Comm_id!=null)
{
if(hs.getAttribute(“goods”)!=null) //HttpSession中不为空直接添加
{
al=(ArrayList)hs.getAttribute(“goods”);
}
ArrayList alGoods=new ArrayList();
alGoods=dao.getGoods(Comm_id); //alGoods获取查询结果
Comm_id=null;
ub=(Comm_dataBean)alGoods.get(0);
al.add(ub);
pw.println(ub.getComm_ID());
hs.setMaxInactiveInterval(100);
hs.setAttribute(“goods”,al);
}
al=(ArrayList)hs.getAttribute(“goods”);
if(req.getParameter(“del”)!=null)
{
String del=req.getParameter(“del”);
al.remove(Integer.parseInt(del));
}[7]
当用户点击按钮我就买这些了后,要判断商品的存货数量是否足够,如果用户要买入的数量大于商品的存货数量要弹出提示,如果用户要买入的数量小于商品的存货数量则将每样商品的和全部消费总额计算出。其关键代码如下:
try{
res.setContentType(“text/html;charset=gbk”);
PrintWriter pw=res.getWriter();
ArrayListal=newArrayList();
HttpSession hs=req.getSession(true);
al=(ArrayList)hs.getAttribute(“goods”);
int Goods_num=0;//商品剩余数量
int Goods_lost=0;
for(int i=0;i<al.size();i++)
{
Comm_dataBean ub=new Comm_dataBean();
ub=(Comm_dataBean)al.get(i);
String Comm_id=ub.getComm_ID();
String ss=req.getParameter(“Comm_id”+i+””);
Dao dao=new Dao();
Goods_num=dao.getNumber(Comm_id);
Goods_lost=dao.lostNumber(Comm_id);
int leafGoodsNumber=Goods_num-Integer.parseInt(ss);
if(leafGoodsNumber<0)
{
res.sendRedirect(“buygoodsError.jsp?erroInfo=”+ub.getComm_name());
return false;
}
}
int sumMoney=0;//计算总钱数
boolean issuccess=false;//判断成功否的标志
for(int i=0;i<al.size();i++)
{
Comm_dataBean ub=new Comm_dataBean();
ub=(Comm_dataBean)al.get(i);
String ss=req.getParameter(“Comm_id”+i+””);
String Comm_id=ub.getComm_ID();
int j=(Integer.parseInt(ss))*Integer.parseInt(ub.getComm_price());
sumMoney=sumMoney+j;
int leafGoodsNumber=Goods_num-Integer.parseInt(ss);
Dao dao=new Dao();
int lost_1=Goods_lost+Integer.parseInt(ss);
issuccess=dao.update(Comm_id,leafGoodsNumber,lost_1);
if(issuccess==false)
{
break;
}
}[8]
3) 生成订单
生成订单是网上购物商城的最终目的,前面的所有的功能的实现都是为最后生成一个用户满意的订单做基础,在此要生成一个可以供用户随时查询订单号,还要保存用户订单中所购买的商品信息。当用户确认对购物车不再改变后,就可以到收银台结帐并生成订单。结帐的流程是:从购物车中读取商品名称,商品数量,商品价格信息,生成唯一的一个订单号,同时也把用户注册的基本信息读取出来,形成一个完整的订单写入数据库中,结帐填写订单的页面如下图。
在生成订单模块中主要使用了调出用户信息并生成唯一订单号(定单号是用登陆的用户名和一个随机数组合起来),调出用户信息就是完全的对数据库进行操作,利用session对象把登陆后的用户名保存起来,在订单生成时把保存的用户名从数据库的用户表中取出定单中有的部分数据,用户再填写一些其他的信息如:邮政编码,联系电话,付款方式,备注这些信息,这样就可以完成一个完整的定单了。在用户点击提交后将以上信息提交到数据库中加以保存,以便以后用户查看。

5-8 填写定单
5.1.3 留言板模块
留言板是一个商务网站中不可少的一部分,他可以增进用户与网站之间的交流。添加留言是用户与用户,以及用户与网站之间的一种交流模式,只有把用户想要表达的内容添加到数据库中,才能在浏览留言板中显示。
用户在留言板中单击“添加留言”超链接就可以打开添加留言页面,该页面用来提交用户输入的留言信息,留言信息写好后,可以点击提交按钮,显示提交成功,若点击浏览留言,可打开留言板页面,该页面显示所有用户的留言,时间最近的排在最前面。
运行结果如图5-9所示:

图5-9 留言板
用户在添加留言页中单击提交按钮,系统将数据表提交到admin/addlea.jsp页,该页用来实现将留言内容存入数据库中,关键代码如下:
<%
Date date=new Date();
String dat=date.toLocaleString();
Condb con=new Condb();
String username=request.getParameter(“username”);
int temp=con.executeUpdate(sql);
if(temp>0){
%>

<%
}else{
%>

5.2后台部分
5.2.1 后台总体框架
后台功能只允许具有管理员权限的用户使用,它是实现前台功能的基础。主要包括管理员身份验证,订单信息管理模块,添加商品模块,查询用户信息管理模块,添加链接模块,公告信息管理模块组成
后台功能介绍

  1. 功能模块介绍
    管理员身份验证:为合法用户提供一个后台入口。
    用户管理:用户列表(用户修改、删除、添加),用户消费列表
    商品管理:商品列表(商品修改、删除、添加),商品搜索,商品销售查询
  2. 后台文件结构
    网站后台文件结构,如下图所示。

5-10 后台结构图
3) 后台首页运行结果

5-11 后台运行结果
5.2.2 管理员登录
在前台首页单击管理员入口,将转到管理员登录页面。该页面的功能是对管理员身份验证,用户输入用户名和密码后单击“登录”按键,系统将判断用户名和密码的有效性,如果通过验证则转到后台首页,反之则提示错误。管理员登录页面的运行结果如图所示。

5-12 后台登陆页面
5.2.3商品信息管理
单击导航区的“商品列表”超链接,在右方会显示所有商品的列表,在列表的下方有个添加商品按钮,点击后系统将打开添加商品页面,该页面主要用于商品信息添加到数据库表中,以提供前台首页商品展示类别展示所需要的数据依据。目录添加页面的运行结果如图所示。

5-13 填加商品页面
为了减少错误,在提交商品信息时,需要对数据的合法性进行验证,输入的商品价格不能是空字符型,这些任务可以用Bean来实现的,也可以由脚本语言Javascript编写,以下是脚本语言函数check()来完成的。
为了确保信息在数据表中的唯一性,在用户提交表单时,需要先根据用户输入的商品名称对数据表进行查询,确保此商品在数据表中不存在后,方可进行添加操作。关键代码如下:
sql=”select Comm_ID from Comm_data where Comm_ID=?”;[9]
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,Comm_id);
rs=pstmt.executeQuery();
if(rs.next())
{
%>
jsp:forwardpage=”Goods_add.jsp”
<jsp:paramname=”warnning”value=”<%=warning%>”/>
</jsp:forward>
<%
}
else
{
sql=insert into Comm_data(Comm_ID,Comm_Name,Comm_Desc,Comm_Type,Comm_Price,Comm_youhui)values(?,?,?,?,?,?)”;
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,Comm_id);
.
.
pstmt.setString(6,Comm_youhui);
pstmt.executeUpdate();
%>
jsp:forwardpage=”Goodsadd_success.jsp”/
<%
}
在商品列表中每个商品的右方有个超链接“修改”,当点击后系统将打开修改商品信息页面,该页面主要用于商品信息修改以方便管理员对每个商品信息的更新和修改。目录修改页面的运行结果如图所示。
[10]
5-14 修改商品信息
为了减少错误,在提交时,需要对数据的合法性进行验证,输入的商品价格不能是空字符型,商品名称也不可以为空,商品优惠价格不可以高于商品原有价格,这些任务可以由脚本语言Javascript编写,这里是用脚本语言函数check()来完成的。
当点击提交按钮后将更新数据库中的信息,其中商品编号是不可以修改的,管理员可以修改商品的出售价格以及商品的优惠后的价格,以达到对商品的信息的修改和更新。
在左侧导航区有个“商品销售查询”超链接,系统将打开商品销售查询页面,该页面主要用于商品的销售情况进行查询,这样可以让商品销售人员看到当天,当月,以及几个月的销售情况,此功能可以很方便的让管理员了解到商品的销售情况这样有利于管理员对进货有很大的帮助,这项功能可以很快的了解的哪重商品在最近销售最好,哪重商品销售较差,如此管理员就知道近期进什么货有利于销售,进什么和不利于销售。商品销售查询结果如图所示。

5-15 商品销售查询
为了减少错误,在点击查询时,需要对数据的合法性进行验证,输入的日期必须与选择的月份相对应,以及在季度查询时输入的两个文本框中必须是数字且在1到12之间,还有就是后面的输入数据必须大于前面的输入数据。
5.2.4 用户信息管理
该模块用来完成对注册用户的浏览及删除功能。如果用户蓄意性注册或在很长的时间内没有购买商品,管理员就可以将该用户删除。管理员还可以对用户信息加以更新。单击导航拦中的“查询用户信息”超链接进入用户信息页面,其运行结果如图所示。

5-16 用户查询结果
需要修改用户信息直接点击“修改”超链接就可以对用户信息进行更新,页面跳转到User_caozuo.jsp。在此页面将用户的原有信息在页面上输出,管理员可以对其信息进行修改,当点击提交修改时将用户的修改信息后,更新数据库中的数据,达到用户信息的彻底修改。其运行结果如图所示。

5-17 修改用户信息
管理员通过此功能管理员可以很容易的看到每个用户的消费情况,对于长时间不消费的用户管理员可以将其删除。其运行结果如图所示。

5-18 用户消费查询
在点击查询按钮后也面跳转到User_sale1.jsp,在这个也面将按照上个也面的查询条件查询出相应的结果,起关键代码如下:
if(day==””)
{
if(month1==””){
sql=”select User_name,Comm_Name,Buy_ListfromBuylist where year=? And month between ? and ?”;
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,year2);
pstmt.setString(2,mm);
pstmt.setString(3,mm1);
rs=pstmt.executeQuery();
}
else{
sql=”select User_name,Comm_Name,Buy_List from Buylist where year=? And month=?”;
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,year1);
pstmt.setString(2,month1);
rs=pstmt.executeQuery();
}
}else
{
sql=”select User_name,Comm_Name,Buy_List from Buylist where year=?andmonth=? and day=?”;
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,year);
pstmt.setString(2,month);
pstmt.setString(3,day);
rs=pstmt.executeQuery();
}
5.2.5定单信息管理
用户在前台购物所产生的订单不能立即执行需要系统管理员在后台订单,运行结果如图5-13所示。信息管理审核确认它执行性。用户单击导航拦中的“订单列表”超链接进入用户订单处理页面,该页面是会显示进期所没有被处理的订单,其运行结果如图所示:

图5-19 用户定单管理
用户订单处理页面显示的是用户的基本信息。要知道订单中所涉及的商品,需要单击对应的订单号的超链接打开商品订购祥单页才行。商品订购祥单的运行结果如图下所示。

图5-20 定单商品列表
6
系统测试
6.1 系统关键部分测试分析
系统完成之后,对各个模块的功能进行了详细的测试,输入数据和预测输出数据相比,发现了一些问题。主要是在查询过程中预计查询结果和实际结果不一致,有时候达不到目的,对数据库的操作表之间的关联考虑得不够周到,因此往往会出现一些小的错误。还有查询条件的前后数据类型不一致也是一个很常见的错误,需要靠一步步的查找解决。各个模块组装完成后,又会出现一些问题。比如在操作购物车结帐的这个流程中,由于是多次添加和修改,最后结帐,所以很容易造成数据混乱,必须对相应的数据关系理清楚,一些关键查询统计的SQL语句必须反复斟酌才能放在程序中使用。
6.1.1 单元测试分析
(1) 经过上面部分的分析,我们可以得知,购物车模块是我们需要特别注意的地方,因为它涉及到了我们数据库中的大部分数据,并且是进行网上交易的最关键部分,绝对不能出现任何的差错,下面我们就针对这一模块进行用例测试:
我们以用户fly的身份登入系统,用户名是:fly 密码是:1234
然后点击定购商品:台灯88元
弹出购物车清单:选择商品数量2确认
出现清单:显示商品名称台灯数量2合计196元
与我们估算的数据相符。
此时选择清空购物车,继续购物,点击定购商品:流氓兔单价为50元
选择数量3确认,出现清单:显示商品名称流氓兔合计150元
继续选择收银台结帐,出现帐单显示:显示商品名称流氓兔合计150元与我们估算的数据也相符,证明清空购物车的功能正常有效,并没有将我们第一次选购的物品计算在内,价格的计算也正确无误。
(2) 对用户注册部分进行测试。
用户名:fly 密码:123456 确认:123456
地址:123123213 性别:男 类别:会员
提交以后,弹出提示信息:该用户已存在,用户名重复验证正常
(3) 对用户修改密码部分进行测试。
用户帐号:fly 原密码:123456
新密码:cccc 确认密码:aaaa
在点击提交按钮后首先验证新密码两次输入不一致,弹出提示信息:两次输入的密码不相同请重新输入!
重新输入让两次密码相同,原密码和输入数据比较不相同则弹出提示信息:原密码不正确!
重新输入原密码:abc弹出提示信息:恭喜你密码修改成功!
(4) 对添加商品部分进行测试。
商品编号:101 商品名称:神州电脑 商品描述:台式机
商品类型:品牌 商品价格:3500 会员优惠:3400
提交以后,弹出提示信息:该商品编号已存在!
在更换商品编号为112后提交以后商品添加成功。进入数据库中查看,此商品信息写人数据库中加以保存。说明此功能正常!
以上是对关键性功能的测试,用相同的方法对各个功能模块进行测试调试直到功能达到预期的效果。
6.1.2 测试分析总结及说明
在测试过程中,我经过模块测试和组装测试,排除了系统的大部分错误。当然排除所有错误是不太可能的,我想应该还有些不易检测到的错误还没有被发现,需要在使用的过程中进一步的完善,数据库的加密是一个重要的概念,在实际的应用过程中是一个尚待解决的问题,应该做好数据库的完善工作,特别是备份和安全工作;另一方面由于时间仓促难免有错误和不完善的地方,希望老师能够帮我指点和纠正。

结束语
在毕业设计的这几个月时间里,我经历了大学4年中最难忘的一段时间,在这段时间里我得到了莫大的收获。
从技术角度来说,通过JSP的使用,我进一步加深了自己的知识,掌握了常规数据库的建立、连接和更新操作。在对JAVA和DreamweaverMX的使用中我也进一步加深了对这些工具的了解,而SQLServer2005的应用也巩固了我学习的成果。
更重要的是,通过这个网上商城,我了解了在网上商城全程管理中的应用技术,在对网上商城,即电子商务的了解中,我认识到了电子商务不是电子和商务的简单相加,而是电子和商务的有效融合;电子和商务的结合并不必然地得到具有更高效率和效益的电子商务,相反,如果结合的不好,电子商务的效率和效益甚至更低。因此,继续将电子商务界定为“通过计算机网络进行商务活动”是不恰当的,我们设计的网上商城系统不能纯粹独立成为一个商务活动的中心,我们需要密切联系传统的商城和传统的配送系统,电子商务的定义应该是“基于计算机网络并与之有效融合的商务活动”。
这次的设计由于时间仓促和水平有限,网站的功能还不完美,安全性不高,尤其是后台功能,很多原先设定的如:定单管理模块等没有实现。本设计的价值比较适合于一些连锁的大型传统商城,可以作为一个网上的窗口,促进商城商务的发展。在以后的学习和工作过程中,我将进一步的改进,包括安全验证系统,更安全的数据库应用,更合理的送货管理以及客户服务。

致 谢
光阴似箭、日月如梭,四年的本科学习很快就要过去了,在论文即将完成之际,我衷心的感谢所有指导、关心和帮助我的老师、同学和朋友。
首先感谢我的导师张坤鳌副教授!本文的研究工作是在张老师的悉心指导和严格要求下完成的。在课题的研究和论文的写作过程中,张老师给了我很多耐心的指导和启发。张老师渊博的学识、严谨的治学态度、敬业的精神和平易近人的态度,给我留下了深刻的印象,在张老师的教导下,我在学习生活方面都得到了很多的进步!他既是良师又是益友,不仅让我学到了专业知识,还让我学到了很多做人的道理,会不断激励着我奋发学习、努力进步。这些都将使我的一生受益匪浅!老师的谆谆教诲将令我终身难忘。在此,请允许我表示我深深的敬意和衷心的感谢。
与此同时,我还要感谢我的同学和室友,他们在我的学习和生活中给与了我很大的帮助和支持。
最后,我要感谢所有在我论文完成过程中给予了帮助和关心的朋友。

参考文献
[1]http://www.cnhww.com/news.asp?id=72
[2]武延军,黄飞跃.精通JSP编程技术[M].人民邮电出版社.2001.
[3]聂小燕.DrwamweaverMX2004动态网站建设全攻略[M].兵器工业出版社,北京科海电子出版社.2005.
[4]徐国智,SQLServer2000数据库系统开发实例精粹,电子工业出版社,2006
[5]飞思科技产品研发中心.JSP应用开发详解[M].电子工业出版.2002
[6]柏亚军.JSP编程基础及应用实例集锦[M].人民邮电出版社.2001.
[7]李江,张威.实例解析XML/XSL/Java网络编程[M]北京希望电子出版社2002
8MichaelJ.Young,前导工作室译.XML学习指南[M].机械工业出版社.2001.
[9]刘韬,SQLServer2000数据库系统开发实例导航[M],人民邮电出版社,2004
[10]李振华,季小武.Drwamweaver基础教程[M].清华大学出版社.2005.
[11]熊锡仪,动态网页设计,清华大学出版社[M],2004
[12]塞奎春.JSP信息系统开发实例精选[M].机械工业出版社.2006.
13DamonHougland,AaronTavistock,马朝晖译.JSP核心技术[M].机械工业出版社.2001.
[14]Chaitanya Koratamaddi,Nancy Greenberg .ORACLE Database 10g:SQL D17108GC21 Edition2.1 December 2006 D48183.
[15]许增伟,张强.JSP快速高效开发利器—DrwamweaverUltraDev[M].清华大学出版社.2002

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>