• 7.34 MB
  • 2022-04-22 13:33:19 发布

购便宜购物商城毕业论文.doc

  • 44页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'购便宜购物商城毕业论文目录ABSTRACTIII第一章引言11.1选题意义11.2.1选择网上商城的原因11.2.2国内网上商城的现状11.2.3现今网上交易存在的一些的问题1第二章项目构架分析与设计22.1物理构架22.2逻辑构架22.2.1JSP+JavaBean+Servlet框架介绍22.2.2JSP简介22.2.3JavaBean简介32.3开发工具32.3.1Myeclipse简介32.3.2TOMCAT6.0简介32.3.3mysql简介32.3.4AJAX技术简介3第三章需求分析53.1网站功能需求分析53.1.1用户需求确定5 3.2数据需求分析63.2.1数据库需求分析63.3技术解决方案需求分析6第四章总体设计74.1数据库myshopping设计74.1.1商品种类信息表(category)的设计74.1.2管理员信息表(adminer)的设计74.1.3订单明细表(salesitem)的设计74.1.4订单信息主表(salesorder)的设计84.1.5会员信息表(user)的设计84.1.6商品信息表(product)的设计84.2前台设计94.2.1前台功能介绍94.2.2前台购物的流程图94.3后台设计94.3.1购便宜网上购物商城后台功能介绍94.3.2购便宜商城后台的操作流程图10第五章界面设计105.1用户注册105.1.1界面105.1.2流程图115.2用户登录11 5.2.1界面115.2.2流程图125.3用户登录125.3.1界面125.3.2流程图155.4查看商品信息155.4.1界面155.4.2流程图165.5商品搜索165.5.1界面165.5.2流程图175.6购物车175.6.1界面175.6.2流程图185.7生成订单185.7.1界面185.7.2流程图185.8后台管理195.8.1界面195.8.2流程图25第六章开发环境配置说明266.1开发环境配置26 第七章开发与测试287.1开发流程287.2测试29第八章所用技巧及难点分析298.1所用技巧298.2难点分析308.2.1分页309.1总结369.2展望37致谢37参考文献38 第一章引言随着全球信息网络的发展,Internet在世界上已不仅仅是一种技术,更重要的是它已成为一种新的经营模式,彻底改变了人类工作,学习,生活,娱乐的方式,已成为国家经济和区域经济增长的主要动力。Internet正成为世界最大的公共资料信息库,它包含无数的信息资源,所有最新的信息都可以通过网络搜索获得。更重要的是,大部分信息都是免费的,应用电子商务可使企业获得在传统模式下所无法获得的巨量商业信息,在激烈的市场竞争中领先对手。因此,本设计是通过JSP语言来实现,一个基于B/S模式三层结构的JSP网上购物网站网站。1.1选题意义网上商城的出现和发展给人们的购物带来了全新的改变,它不但使整个购物的性质和方式发生了翻天覆地的变化,而且也使人们整个购物流程变得高效而便捷。网上商城交易的个性化、自由化可为企业创造无限商机,降低成本,同时可以更好地建立同客户、经销商及合作伙伴的关系,为此,许多公司积极拓展电子商务,为客户服务,进行价值链集成。1.2当今网上购物的发展现状1.2.1选择网上商城的原因网上商城也是电子商务的一种典型应用。JSP是构建电子商务系统的新兴技术,采用JSP技术,可以方便地将系统分离为三层:表示层、业务层及数据库层。表示层向客户的浏览器提供基于Web的显示页面;业务层处理客户购物过程;数据层则提供数据存储。采用这种层次结构可以提高系统的扩展性和服务器的效率,方便开发。本设计只在满足网上购物的基本功能,主要采用JSP技术,设计和开发开发了一个网上购物系统,具有可靠性好、可扩展性和可重用性的特点。系统中采用多种设计模式来提高系统性能:采用前台控制器来方便地实现导航;采用复合视图来向用户提供Web显示,减少了视图中代码的重复;采用业务代表降低各层之间的耦合;并在业务层中采用值对象来向表示层提供数据。系统以mysql数据库管理系统作为后台数据库,应用于基于B/S模式的网上商城系统的设计与实现。1.2.2国内网上商城的现状在国内的网上商城:(1)起步晚、数量却非常多。虽然我国的网上商城起步的很晚,但是发展却很迅速,根据某调查网站上的数据可知,到目前具有网上商城的性质的网站达上万之多,但是能够真正满足消费者购物要求的却不多。(2)支付和安全认证上的客观技术原因,导致用户完成电子商务交易变得相当复杂,使大部分用户还没等交易完成就已经退避三舍了,所以开发一个安全又操作简单的网上商城难度很大。(3)由于很多网上商城商家一开始都想把自己的网站做到成亚马逊那种境界,这导致很多网站只对商城货物的品种和数量上加以扩张,却不对数据查询技术加以改进,这使很多网站在用户浏览的时候速度很慢或者交易的过程中时间太长。(4)很多网上商城跟用户的交流很少,开发出来的网站,却不适合大部分用户的要求。1.2.3现今网上交易存在的一些的问题根据CNNIC最新公布的第十二次互联网调查结果显示,用户认为目前网上交易存在的最大问题是商品质量、售后服务及厂商信用得不到保障和安全性得不到保障,分别达到40%和25%,两者之和达到65%。据中国消费者协会投诉部有关人士介绍,近年来,网上购物过程中出现的各种“陷阱”也已成为投诉的热点。主要表现在三个方面:一是夸大其辞、虚假宣传; 二是违法提供有奖销售服务,利用巨额奖金或奖品诱惑消费者浏览其网站;三是不履行售后服务约定,对网上售出的商品不承担“三包”责任。诚信是网上购物最值得关注的问题,营造宽松繁荣的电子商务环境,必须通过立法解决诸如交易手段和诚信等问题。要建立网上交易诚信机制,不是单靠评个诚信网站就能解决的,而是要在开展电子商务的机制上和社会配套上给予解决。第二章项目构架分析与设计2.1物理构架(1)网络服务器操作系统:Windows7;(2)Web服务器:Tomcat6.0;(3)后台数据库系统:MySQL;(4)JSP运行环境:J2SDK1.6。2.2逻辑构架2.2.1JSP+JavaBean+Servlet框架介绍Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。Servlet+JSP、JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。JSP+JavaBean+Servlet三层结构的实质是比jsp+javaBean两层结构多了一个Controller:Servlet来分发客户端浏览器的请求。如果把起控制器作用的Servlet的作用理解为对客户端的请求进行预处理对理解Servlet将有很大的帮助。通过web.xml配置文件可以找到用户请求和特定的Servlet的对应关系,每个Servlet都有一个特定的Servlet对象与之对应,所以说处理用户请求的就是一个继承自HttpServlet的Servlet对象。当然也可以把这些处理操作完全写在jsp程序中,不过这样的jsp页面可能就有成百上千行,光看代码就是一个头疼的事情,更不用说修改了,这对以后的代码维护增加很大的难度,而且可能同样的代码会在一个页面当中出现多次,这不但降低了代码的可读性也降低了代码的重用性。由此可见,通过JavaBean可以很好地实现逻辑的封装、程序的易于维护等等。如果使用Jsp开发程序,一个很好的习惯就是多使用JavaBean。数据库其工作原理如图2-1所示。JDBC客户ServletView.jsphttp请求forward设置Control读取javaBean值图2-1三层架构的工作原理2.2.2JSP简介 JSP(JavaServerPages)技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP技术还有如下几个优点:(1)一次编写,到处运行;(2)系统的多平台支持;(3)强大的可伸缩性;(4)多样化和功能强大的开发工具支持。2.2.3JavaBean简介JavaBean是sun微系统的一个面向对象的编程接口,它可以让开发展建可重用应用程序或能在网络中任何主流操作系统平台上配置的程序块,称作组件。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的jsp页面、servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。2.3开发工具2.3.1Myeclipse简介MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、Struts、JSF、CSS、Javascript、SQL、Hibernate。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。2.3.2TOMCAT6.0简介Tomcat6.0服务器是Apache组织开发的一种JSP引擎,本身具有WEB服务器的功能,可以作为独立的WEB服务器来使用。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能,而且它还是一个免费开源的系统,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。但是,在作为WEB服务器方面,Tomcat出来静态HTML页面时不如Apache迅速,也没有Apache健壮,所以一般将Tomcat与Apache配合使用,让Apache对网站的静态页面请求提供服务,而Tomcat作为专用的JSP引擎,提供JSP解析,以得到更好的性能。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑具体的操作系统平台。2.3.3mysql简介MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP/Perl/Python)和LNMP(Linux+Nginx+MySQL+php/perl/Python),即使用Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。2.3.4AJAX技术简介Ajax的全称是:AsynchronousJavaScriptXML,运用异步JavaScript+XML,浏览器就不必等用户请求操作,也不必更新整个窗口就可以显示新获取的数据。只要来回传送采用XML格式的数据,在浏览器里面运行的JavaScript代码就可以与服务器进行联系。JavaScript代码还可以把样式表加到检索到的数据上,然后在现有网页的某个部分加以显示。Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发技术。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。 第三章需求分析3.1网站功能需求分析3.1.1用户需求确定1.普通用可以通过系统浏览商品(按类别)。2.普通用户可以通过系统搜索商品(按大类别、商品名称)。3.普通用户可以通过注册成为系统的会员(免费注册)。4.会员可以通过系统浏览和搜索商品。5.会员可以通过系统下订单。6.会员可以浏览自己以前的订单。7.会员可以通过系统管理自己的信息重设密码8.管理员可以通过后台进行会员管理①会员浏览;②会员历史订单浏览。9.管理员通过后台进行商品分类的管理①浏览、添加、删除、修改商品种类。12.管理员通过后台进行商品管理①新增商品;②商品删除;③商品信息修改;④商品检索。13.管理员通过后台进行订单的管理①订单查询;②修改订单状态。3.1.2系统业务逻辑需求分析1.会员类①包装会员信息;②与订单类是一对多的关系。2.管理员类①封装系统管理员。3.商品类①包装商品的信息;②与订单类是多对多的关系。4.商品类别类①包装商品的类别;②与商品是一对多的关系。5.订单类 ①与商品是多对多的关系;②与会员是多对一的关系。6.订单明细类①包装订单中商品的信息;②与订单是多对一的关系。3.2数据需求分析3.2.1数据库需求分析数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有Access、SQLServer、Oracle等。根据用户的需求和系统分析,本系统采用mysql数据库管理系统。在mysql数据库管理系统中建立名称为myshopping的数据库。这个数据库需要提供各种信息的保存、更新和查询,这就要求数据库结构充分满足各种信息的输出和输入。搜集基本数据、数据结构和数据处理的流程,组成一个详尽的数据字典,为后面的具体设计打下基础。在myshopping的数据库中,根据项目的需求建立相应的数据表,如下:1、user(会员信息表),包括数据项:用户ID,邮箱,密码,联系方式等;2、product(商品信息表),包括数据项:商品编号,商品名称,商品描述,商品价格,商品上架日期,商品所属种类,商品数量,商品图片所在地址等;3、category(商品类别类),包括数据项:类别ID(自动编号),类别名称,类别等级,上级种类ID;4、adminer(管理员类),类别ID、用户名、密码;5、salesitem(订单信息明细表),包括数据项:编号,商品编号,单价,数量,订单编号等。6、salesorder(订单信息主表),包括数据项:订单编号,用户编号,订单标识符(是否已发货),商品总价等;3.3技术解决方案需求分析(1)WebServer–Tomcat6.0;(2)DataBase–mysql;(3)开发环境–MyEclipse8.5。 第四章总体设计4.1数据库myshopping设计本设计的数据库名字为myshopping,此数据库中总共有六张表分别为:category(商品种类信息表)、adminer(管理员信息表)、salesitem(订单明细表)、salesorder(订单信息主表)、user(会员信息表)、product(商品信息表)。4.1.1商品种类信息表(category)的设计表4-1category表列名数据类型长度是否空描述IDint11否类别ID(自动编号),主键namevarchar255否种类名gradeint11否种类级别descrvarchar255是种类描述pidint11否上一级种类id4.1.2管理员信息表(adminer)的设计表4-2adminer表列名数据类型长度是否空描述IDint11否类别ID(自动编号),主键usernamevarchart40否用户名passwordvarchar32否密码4.1.3订单明细表(salesitem)的设计表4-3salesitem表列名数据类型长度是否空描述IDint11否ID号,主键orderIDint11否与salesorder表的orderID字段关联productidint11否商品IDpriceint11否价格 pcountfloat0否数量4.1.4订单信息主表(salesorder)的设计表4-4salesorder用户表列名数据类型长度是否空描述orderIDint11否订单编号,主键useridint11否用户idtotalpricefloat0否商品总价odatedatetime0否订单添加时间finishedint11否订单发货标识符4.1.5会员信息表(user)的设计表4-5user表列名数据类型长度是否空描述IDint11否会员ID号,主键usernamevarchar40否用户名passwordvarchar32否密码cityvarchar32否所在城市streetvarchar64否所住地街道phonevarchar40否手机电话emailvarchar20否E-mail地址homephonevarchar20否家庭电话provincevarchar32否所在省4.1.6商品信息表(product)的设计表4-6product表列名数据类型长度是否空描述IDint11否商品ID,主键categoryidint11否类别IDnamevarchar255否商品名称descrvarchar255否商品简介normalpriceint11否原价memberpriceint11否会员价 photoVarchar255否图片文件pdatedatetime0否录入时间numint11否数量4.2前台设计4.2.1前台功能介绍当用户进入到本系统的主页后,用户可以自由的浏览商品信息和搜索商品。当用户需要购买商品时,用户需要先进行注册,注册后再登录,然后再把选中的商品添加到购物车当中,最后交易生成订单。当用户进入首页时,需登录才能查看购物车以及订单详情。否则,将进入登陆界面。4.2.2前台购物的流程图用户在网上商城购物的整个购物流程如下图4-1所示。用户注册没注册用户登录没登陆进入网站首页删除所选商品修改数量商品搜索浏览商品继续购买添加到购物车成功添加查看购物车继续购买生成订单结算订单查看图4-1网站购物与交易处理流程4.3后台设计 4.3.1购便宜网上购物商城后台功能介绍在后台,管理员通过用户名和口令进行登录,在后台管理员可以对商品的类别加以管理:浏览类别、添加类别、删除类别以及修改类别信息;可以对商品的管理:浏览商品、添加商品及修改商品信息;对用户的管理:查看注册的用户;对订单的管理:查看订单、以及对订单处理等功能。4.3.2购便宜商城后台的操作流程图管理员在后台进行管理的整个操作流程如下图4-2所示。管理员登录进入后台管理的界面那订单管理商品管理商品类别管理用户管理订单详情浏览订单发货订单浏览商品删除商品修改商品增加商品浏览用户浏览类别浏览类别修改类别删除类别增加图4-2网站购物与交易处理流程第五章界面设计5.1用户注册5.1.1界面 当进入注册界面,需填写注册所需的用户名、密码、确认密码、联系电话、送货地址等信息,如果邮箱已被注册,提示该邮箱已被注册;如果点击注册时,有空的地方没有填写,将弹出相应的提示信息。都输入完成之后可以单击“提交”按钮进行注册,具体效果如图5-1-1所示。注册成功后页面如下:如果点击登录链接将跳入到登陆界面,如果不点击,3秒钟后将自动跳入到登陆界面:图5-1-15.1.2流程图主页点击注册按钮填写注册信息返回登录注册图5-1-25.2用户登录 5.2.1界面(1)首先可以在主页的左上方进行登录,需填入会员名和密码点击登录按钮进行登录,登录成功自动跳入首页,具体效果如图5-2-1所示:如果填写错误,将跳入到错误页面,如下图,点击返回跳入到登陆界面。图5-2-15.2.2流程图注册成功返回主页登陆登录成功自由购物图5-2-25.3用户登录5.3.1界面 (1)当用户在专门的登录页面登录成功之后页面自动跳转到前台首页,登陆后,由于注册时,密码采用md5技术对密码进行加密,所以用户不能修改密码,用户只可以重设自己的密码,如下图所示:图5-3-1(2)登陆成功后,用户也可以通过点击最上面的我的订单,查看以前的够买订单,可以点击详细信息按钮查看该订单中所有的商品信息,具体效果如图5-3-2所示:图5-3-2(5)登陆成功后,用户也可以通过点击最上面的购物车,查看登录成功后选中的物品,点击删除按钮可以对购物车中商品进行删除,点击继续购买返回首页,点击下订单,页面跳转到下订单页面,具体效果如图5-3-3所示: 商品数量可以进行修改,如果数量修改后超过商品总量将弹出提示信息。修改完数量后,点击更新购物车,可以对购物车进行更新。如果数量为空,将弹出提示信息,如下图: 图5-3-35.3.2流程图注册成功返回主页登陆登录成功自由购物图5-3-65.4查看商品信息5.4.1界面进入首页后,用户可以根据菜单栏选择自己想要选择的商品,首页中间为商品所有种类,再下面是最新上架的商品,可以选择它进行够买,首页具体效果如图5-4-1所示: 图5-4-15.4.2流程图商品浏览登录成功查看商品详情图5-4-25.5商品搜索5.5.1界面当主页的商品不能满足用户的要求时,用户可以在主页进行商品搜索(关键字搜索),搜索结果如图5-5-1所示: 图5-5-15.5.2流程图商品搜索登录成功查看商品详情图5-5-25.6购物车5.6.1界面当在主页浏览货物过程中看中了自己喜欢的商品,可以单击图片或者单击图片下“详情”查看该件商品的详细信息(商品名称、图片、描述、价格),具体效果如图5-6-1所示:图5-6-1了解了商品详情之后,如果确定要买此商品可以单击“添加到购物车”把商品添加到自己的购物车,在购物车页面用户也可以修改您要购买物品的数量,具体效果如图5-6-2所示: 图5-6-25.6.2流程图查看商品详情添加购物车修改购买数量确认订单图5-6-35.7生成订单5.7.1界面(1)当完成所有的货物选择之后,就可以在购物车页面单击“确认订单”按钮进入订单信息确认界面以及对所买商品进行结算,具体效果如图5-7-1所示:图5-7-15.7.2流程图 确认订单结算商品总价格确认送货信息确认支付图5-7-35.8后台管理5.8.1界面(1)首先进入后台管理的登录页面,填写管理员的用户名和密码单击“登录”按钮可进入后台进行管理,具体效果如图5-8-1所示:图5-8-1(2)当用户名和密码登录无误,管理员可成功将纳入后台的主界面,在主界面可以别对用户、商品类别、商品信息、订单以及报表的管理,具体效果如图5-8-2所示:图5-8-2(3)首先是用户管理模块,在用户管理中可以对所有注册的用户用户进行浏览,具体效果如图5-8-3所示: 图5-8-3(4)在类别管理模块中,管理员可以对商品的类别进行浏览(分别可以表格展示和树状形式的展示)、添加类别、删除删除类别、修改类别信息,具体效果如下图所示:浏览产品种类页面,通过点击一级菜单和二级菜单按钮,可分别查看商品种类内容。点击新增按钮可以添加商品种类。 点击确定按钮将直接保存。如果填写的内容中有空的,将弹出相应的提示信息。如果填写内容都不为空,将直接保存。点击编辑按钮可以对商品种类进行修改,点击确定按钮将直接修改。如果填写的内容中有空的,将弹出相应的提示信息。如果填写内容都不为空,将直接修改。 点击删除按钮可以对该种类下商品种类及商品全部删除。如果点击一级菜单后删除,如果该一级菜单下面还有二级菜单及商品,删除将提醒是否删除。如下图:如果点击确认按钮,将把该种类及下面的二级种类及下面的所有商品删除,商品也将从服务器上直接删除。(5)在商品管理模块中,管理员可以对商品信息进行浏览、修改信息、删除商品,具体效果如下图所示:点击左侧产品管理可以查看所有产品信息。也可以通过点击查询按钮,对产品进行级联查询(根据产品名称和种类一起查询,名称查询为模糊查询)。点击新增按钮可以对商品进行增加,其中可以对产品的图片进行上传,产品图片将直接上传到服务器上,如下图。 另外,需要注意的是:商品新增时,价格及商品数量只能输入数字,中文及拼音将被屏蔽,商品图片也只能上传相应的图片格式,内容都填写完整后(如果有空的地方没填写,点击确定时将弹出相应的提示信息),点击确定按钮将保存成功,弹出保存成功,并刷新当前页面,点击取消,弹出框将关闭。如下图:点击编辑按钮可以对商品进行修改,修改时,上级菜单我设置为不能修改,另外,需要注意的是:商品修改时,价格及商品数量只能输入数字,中文及拼音将被屏蔽,商品图片也只能上传相应的图片格式,内容都填写完整后(如果有空的地方没填写,点击确定时将弹出相应的提示信息),点击确定按钮将修改成功,弹出修改成功,并刷新当前页面,点击取消,弹出框将关闭。可以对商品的图片也进行修改,修改之后原来的图片将在服务器上被删除,被新的替换掉。 点击删除按钮可以对商品进行删除,可以选择删除,也可以全选删除,删除商品是如果商品已经在订单中使用过,将提醒你该商品不能删除。(6)管理员也可以进入订单管理的模块,在订单管理中,管理员可查看所有的订单,以及订单的明细,再根据现在目前的库存情况对订单进行处理,订单管理中有未发货和已发货两种查看方式,在未发货中选择相应的行(如果不选择,将弹出提示信息),然后点击发货,将弹出发货成功,该订单将可以在已发货订单信息中查看,点击订单中的详细,将可以对订单中的订单详情进行查看,具体效果如图5-8-7所示: 图5-8-75.8.2流程图后台管理的整个流程图如下图5-8-10所示: 管理员登录浏览用户管理浏览、添加、删除、修改、添加商品种类商品类别管理浏览、添加、删除、修改商品商品管理浏览、订单处理订单管理图5-8-10第六章开发环境配置说明6.1开发环境配置本人在设计的过程中,需要搭建一个普通WEB开发环境,具体的环境配置如下:第一步:到官方网站下载JDK1.6、Tomcat6.0、mysql软件,以及NavicatPremium管理组件等软件。第二步:安装jdk和配置环境变量和Tomcat6.01.安装J2SE的JDK1.6以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:JAVA_HOME=D:Javajdk1.6.0_30classpath=.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;(.;一定不能少,因为它表示当前路径)path=%JAVA_HOME%bin;如图6-1所示: 图6-1接着可以写一个简单的启动MS-DOS窗口来测试J2SDK是否已安装成功,点击->开始->运行->输入cmd->点击确定。在DOS窗口中输入javac,按键,系统会输出javac命令的使用帮助信息,如下图6-2所示。这说明JDK配置成功,否则需要检查上面各步骤的配置是否正确。 图6-2接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。第三步:安装mysql在安装mysql的过程后,要安装NavicatPremium这个软件,它相当于数据库的一个图形界面工具,可以查看数据库中的所有数据库及表的信息。第三步:安装MyEclips8.5双击MyEclips8.5可以进行安装,选择适当路径进行安装。等待安装完成之后,启动MyEclipse之后必须设置的两项是设置Java的JDK路径和服务器(Tomcat6.0)路径。当启动完成之后,新建一个Web项目,命名为myshopping。第七章开发与测试7.1开发流程 本人在设计的过程中,采用循序渐进的方式进行开发,为使开发的过程是一个循序渐进的过程,为此本人按如下步骤进行开发:⑴完成数据库myshopping的设计。⑵完成用户注册模块。⑶完成用户登录模块以及自服务功能(用户信息修改),从而验证用户注册模块。⑷转入后台设计。首先完成对用户管理模块(增删改查等功能),再完成对类别的管理模块。⑸完成对商品信息的管理模块,可以对上一步骤的验证。⑹再转入前台设计。在前台主页展现后台所添加的类别和商品,以供用户浏览。⑺完成商品购物模块。包括购物车、订单产生等模块。⑻查看用下过的订单模块。⑼再转入后台设计。完成后台管理的对订单管理的模块。⑽完成后台对商品销售情况的分析模块。⑾整个系统在功能模块基本完成了之后,最后的任务就是给系统界面的美化,使所有的页面变的美观,以及对代码的完善和最后综合测试。7.2测试由于开发的方式是采用的螺旋递增的方式进行开发的,所以在测试的过程也同样采用螺旋递增的方式进行测试即:—开发—测试—开发—测试。也就是在开发的过程之中伴随着测试,测试的同时也是为下一个模块的开发做铺垫,这样不但可以提高开发的效率,同时也可以在开发的过程中及时发现错误,避免了那种瀑布型开发模式的不足,在整个系统开发完毕再去测试,给最后的测试带来了很大的困难。在整个设计的过程中,本人感触最深的就是测试的重要性还有前期准备工作的重要性。不重视测试,若是老想着把所有工作做完后再去测试,结果总是很不理想。因为如果不及时进行测试,当把所有的代码都写完的时候才去测试,结果发现很多错误出现的具体位置在哪,这增加了测试的难度。第八章所用技巧及难点分析8.1所用技巧(1).弹出框lhgdialog。本项目很多地方都用到了弹出框,如前台首页的重设密码,后台的新增,修改商品种类,新增,修改商品时使用到了弹出框。Ihgdialog介绍:lhgDialog是一个功能强大且兼容面广的对话框组件,它拥有精致的界面与友好的接口。基于网络访问并且兼容IE6.0+,Firefox3.0+,Opera9.6+,Chrome1.0+,Safari3.22+。相对于网上其它弹出窗口插件主要功能是提示信息来说,本插件主要是用来制作窗口中内容较多,页面比较复杂的窗口。本插件的窗口内容面主要是以嵌入iframe框架为主,内容页为一个单独的页面。这样就可以更方便的管理内容页,页面的样式也不受其它页面的影响,而且内容页可以是静态或动态的任何一种文件。由于本插件主要是用来制作大型的窗口,页面和窗口间的交互肯定会非常频繁,所以本插件提供了丰富的交互控制接口,可以非常方便的进行页面间的数据的传输。 由于本插件所需的lhgcore.min.js库文件就相当于一个精简的jQuery库,所以本插件的代码的书写方式和jQ的一样精简。如果您想把它做的jQ的插件,只要在页面引入jQuery的库(此时不再需要引入lhgcore.min.js库文件),代码作一下非常简单的修改即可。无论你把窗口插件放在哪里,你都不需要担心会被外层的frameset或iframe所遮挡进而影响客户体验,lhgdialog窗口插件是可以跨无限级框架显示的,lhgdialog采用九宫格的XHTML结构,CSS类钩子比较丰富,可以定制类似桌面软件般精致的皮肤。.(2).jGrid表格插件使用jqGrid是一个用来显示网格数据的jQuery插件,本项目中后台的所有表格都是采用jGrid表格,jGrid好用的原因时它封装了好多的js方法,这样你不用再自己写js了,所有开发速度也快了。jqGrid介绍:JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信。jqGrid安装很简单,只需把相应的css、js文件加入到页面中即可。需要说明的是,jquery-ui的字体大小与jqgrid字体大小不一致,故需要在页面上在加上一段style来指定页面上文字大小。jqGrid原理:jqGrid是典型的B/S架构,服务器端只是提供数据管理,客户端只提供数据显示。换句话说,jqGrid可以以一种更加简单的方式来展现你数据库的信息,而且也可以把客户端数据传回给服务器端。对于jqGrid我们所关心的就是:必须有一段代码把一些页面信息保存到数据库中,而且也能够把响应信息返回给客户端。jqGrid是用ajax来实现对请求与响应的处理。(3).放大器插件前台的商品详细页面,鼠标移上去后,图片将被放大,此处就是用到了放大器插件。Jqzoom插件使用:放大器插件使用起来相当简单,只需要把相应的js插件放到你要放到的位置,然后在页面上引入该js插件,然后在要放大的图片上改改相应的css,则可使用。8.2难点分析8.2.1分页本项目好多地方都用到了分页技巧,虽效果差不多,但是其实,所使用的方法都有所不同,下面我将分别说说我所使用的几个分页技巧。(1).后台的表格都有分页。因为后台表格使用的jGrid表格插件,而该插件已经将分页代码全都封装,所以分页代码不用写,只需自己设置一下,每页显示几条数据,然后将页数传递到服务器端,服务器端将根据相应的页数,显示当前页的所有信息。(2) .前台的显示所有的商品列表及通过查询找出的商品列表都是用到了分页,这个分页是自己写的代码,jsp页面这端自己封装了个js方法,然后通过ajax与服务器端连接,通过每页显示条数,及需要显示的哪一页,服务器端通过自己写的代码,将把所有的查出的商品查出,然后显示在jsp页面上。由于是自己写的代码,所以分页的,上一页,下一页图片都可以使用自己的图片。(1).前台的购物车及订单查看,分页采用的技术是:使用jsp页面分页技术。原理是:服务器返回全部的信息,jsp页面上再根据提供的每页显示条数,及当前页数显示分页信息。使用:使用时只需要引入两个包。Pager-src.jar,pager-taglib.jar与上面第二个分页不同的地方就在于它是页面分页,而第二个是服务器分页,服务器端分页需要每次都把数据传到服务器端,然后服务器端把需要的内容从数据库中查出来,然后在显示在jsp页面上;而jsp分页只需一次得到全部内容,在页面上分页即可,不需要每次都从服务器端取数据,所以相对来说,jsp页面分页比较方便,也比较快,使用起来也比较简单。8.2.2.图片的上传技术由于该项目采用jsp+servlet的技术,而不是struts(如果是strut的话,在服务器端直接就能得到上传文件的名字,大小,等等),采用servlet后,则需要自己手动写代码,写上传文件代码,我此次上传技术,采用的是:通过流传递,把上传的图片,一个字节一个字节的传到服务器端,需要引入的两个包有:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar,服务器端代码具体如下:Stringvalue=item.getName();intstart=value.lastIndexOf("\");StringfileName=value.substring(start+1);Randomrandom=newRandom();fileName=UploadFile.createRandomFileName(fileName,path,random);photo=fileName;item.write(newFile(path,fileName));OutputStreamos=newFileOutputStream(newFile(path,fileName));InputStreamis=item.getInputStream();byte[]buffer=newbyte[400];intlength=0;while((length=is.read(buffer))!=-1){os.write(buffer,0,length);}is.close(); os.close();但是需要注意的是:在删除图片时,必须把图片也删除,不仅仅是把数据库里面的图片地址删除。8.2.3.购物车模块本项目购物车模块,我才用的是session技术。Session技术原理:在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。Session是用于保持状态的基于Web服务器的方法。Session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象。Session通常用于执行以下操作:存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览Web应用程序时需要的其它信息。存储只需要在页重新加载过程中或按功能分组的一组页之间保持其状态的对象。Session的作用就是它在Web服务器上保持用户的状态信息供在任何时间从任何页访问。因为浏览器不需要存储任何这种信息,所以可以使用任何浏览器,即使是像PDA或手机这样的浏览器设备。说到session就会想到cookies,Session和Cookie的主要区别在于:Cookie是把用户的数据写给用户的浏览器。Session技术把用户的数据写到用户独占的session中。Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。session失效的方法:session.invalidate();session的有效时间:30分钟,在web.xml中配置session的有效时间:在web-app标签中设置如下:60单位是分钟默认设置是在tomcat中:web.xml另外,需要知道的是session的生命周期:从创建出来session开始默认情况下如果浏览器窗口关了,session失效浏览器窗口没有关,但是seesion的有效期到了浏览器的窗口关了,但是session的唯一标识用cookie保存下来了,只要session的有效期没有到,则session都是有效的应用程序停止,session失效作用范围:只要在浏览器窗口没有关,通过这个窗口发送的请求就都可以得到整个应用程序中都有效,但是是浏览器独享的。request.getSession()得到/创建sessionrequest.getSession(true)相当于request.getSession()request.getSession(false)没有session就返回null浏览器的版本:ie8中同一个浏览器打开两个窗口是共享session的。但是ie7中就不是同一个浏览器打开两个窗口是不共享session的使用session注意点:IE禁用Cookie后的session处理:URL重写response.encodeRedirectURL(java.lang.String url) 用于对sendRedirect方法后的url地址进行重写。response.encodeURL(java.lang.String url)用于对表单action和超链接的url地址进行重写。本项目中的购物车模块就是把购物车放到session域里面,这样不管到了那个页面,都可以通过session的属性得到该购物车,并可以通过自己写方法,实现购物车增加商品,删除商品。购物车代码主要如下:publicclassMyCart{HashMaphm=newHashMap();//添加//添加方法1publicvoidaddProduct(Stringid,Productproduct){if(hm.containsKey(id)){//如果已经购买product=hm.get(id);intshoppingNum=product.getShoppingNum();product.setShoppingNum(shoppingNum+1);}else{hm.put(id,product);}}//添加方法2publicvoidaddProduct2(Stringid){if(hm.containsKey(id)){//如果已经购买Productp=hm.get(id);intshoppingNum=p.getShoppingNum();p.setShoppingNum(shoppingNum+1);}else{hm.put(id,ProductDAO.getProduct(Integer.parseInt(id)));}}//删除 publicvoiddelProduct(Stringid){hm.remove(id);}//更新(更新购买的dongxi数量)publicvoidupdateProduct(Stringid,Stringnums){//取出id对应的bookProductp=hm.get(id);p.setShoppingNum(Integer.parseInt(nums));}//清空publicvoidclearProduct(){hm.clear();}//显示该购物车中的所有商品信息publicArrayListShowMyCart(){ArrayListarr=newArrayList();//遍历hashmapIteratorit=hm.keySet().iterator();while(it.hasNext()){//取出keyStringid=(String)it.next();Productp=hm.get(id);arr.add(p);}returnarr;}//计算总价publicfloatgetTotalPrice(){floattotalPrice=0.0f;Iteratorit=hm.keySet().iterator();while(it.hasNext()){StringproductId=(String)it.next(); Productp=hm.get(productId);totalPrice+=p.getNormalPrice()*p.getShoppingNum();}returntotalPrice;}}8.2.4.验证码技术主要利用Session实现一次性验证码。一次性验证码的主要目的就是为了限制人们利用工具软件来暴力猜测密码。服务器程序接收到表单数据后,首先判断用户是否填写了正确的验证码,只有该验证码与服务器端保存的验证码匹配时,服务器程序才开始正常的表单处理流程。密码猜测工具要逐一尝试每个密码的前题条件是先输入正确的验证码,而验证码是一次性有效的,这样基本上就阻断了密码猜测工具的自动地处理过程。本项目中注册是使用到了验证码技术。代码主要如下:publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("img/jpeg");//图片的内存映像BufferedImageimage=newBufferedImage(60,20,BufferedImage.TYPE_INT_RGB);//获得画笔对象Graphicsg=image.getGraphics();Randomr=newRandom();g.setColor(newColor(r.nextInt(255),r.nextInt(255),r.nextInt(255)));g.fillRect(0,0,60,20);g.setColor(newColor(0,0,0));Stringnumber=r.nextInt(99999)+"";g.drawString(number,5,15);g.setColor(newColor(r.nextInt(255),r.nextInt(255),r.nextInt(255)));g.drawLine(r.nextInt(60),r.nextInt(20),r.nextInt(),r.nextInt());//压缩成jpeg格式OutputStreamos=response.getOutputStream();JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(os); //把BufferedImage对象中的图像信息编码后向创建盖度uixiang(encoder)时指定的输出encoder.encode(image);request.getSession().setAttribute("check_code",number);}8.2.5.md5加密技术MD5即Message-DigestAlgorithm5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNⅨ下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:MD5(tanajiya.tar.gz)=0ca175b9c0f726a831d895e269332461这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。原理是:原理对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。在MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448。因此,信息的位长(BitsLength)将被扩展至N*512+448,N为一个非负整数,N可以是零。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息的位长=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。MD5中有四个32位被称作链接变量(ChainingVariable)的整数参数,他们分别为:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。将上面四个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d。主循环有四轮(MD4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向左环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。本项目中加密技术再用户注册时使用,密码经过加密后保存到数据库中,md5加密使用起来相当简单,只需引入一个已经写好的方法,调用它即可。调用该方法,默认返回一个32位的字符串,然后将该字符串保存到数据库即可。代码主要如下:publicstaticStringgetMD5Encoding(Strings){byte[]input=s.getBytes();Stringoutput=null;//声明16进制字母char[]hexChar={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};try{//获得一个MD5摘要算法的对象MessageDigestmd=MessageDigest.getInstance("MD5");//使用指定的字节更新摘要。 md.update(input);/*MD5算法的结果是128位一个整数,在这里javaAPI已经把结果转换成字节数组了*/byte[]tmp=md.digest();//获得MD5的摘要结果char[]str=newchar[32];byteb=0;for(inti=0;i<16;i++){b=tmp[i];str[2*i]=hexChar[b>>>4&0xf];//(取b的高四位)换成16进制字母str[2*i+1]=hexChar[b&0xf];//(取b的低四位)换成16进制字母}output=newString(str);}catch(NoSuchAlgorithmExceptione){e.printStackTrace();}returnoutput;}第九章总结与展望9.1总结这次设计是对自己综合能力的一次考验,所以说任务艰巨,工作量非常之大。从选题、收集资料、学习相关业务技术到实际编程,我都做了长期的准备和比较星系的的规划,把其当成再度俄期间做的最后一次“大作业”。当然在此次设计过程也遇到了很多问题,当遇到问题的才知道,态度决定一切,细节决定成败。同时也发现自己只是上面还有很多不足之处,要加紧学习。比如在开发过程遇到的一个非常简单的中文乱码问题,这个问题在平时看来就是一个很普通的问题,但是解决起来却没有想象之中的那么简单了,以至为解决这个问题花费了大量的时间,这也是我想明白了在以后的学习当中一定要知其然知其所以然。通过这次毕业设计以及撰写本毕业论文,我对JSP有了更深一步的了解,而且对。网站的建设和维护有了更具体形象的理解。这次设计虽然花费了很大的精力,但是也进一步熟悉了一些工具如:Dreamwaver、photoshop等软件的操作。但是同时又发现了自己的很多不足之处,以后要加紧学习。9.2展望 本系统实现了网上商城在线购物的一些基本功能,但是由于时间和能力有限,还有很多功能未能实现,例如:在线支付、弹出式广告等功能。而且由于自己在美术和审美能力等方面的不足,所以整个网站的界面还不尽如人意。当然这需要在以后的工作和学习中加强学习,以完备自己的各方面能力。同时我还知道了和学习了一项技术Ajax技术,它的主要作用和功能是在不刷新页面的情况下与服务器通信的效果,从而减少了用户等待的时间。但是我对Ajax的了解仅限于此,希望以后能了解到更多的动态网页开发知识。致谢经过几个月的忙碌和工作,本次毕业设计业已完成了,作为一个本科生的毕业设计,由于经验的匮乏和知识面的不完善,难免有许多考虑不周全和不完善的地方,但是在指导老师和同学们的帮助下很多困难都得以解决,所以在此本人要特别感谢他们对我的帮助。首先我要感谢我的指导老王玲老师,感谢他在整个毕业设计过程中的指导,始终督促我们坚持完成自己的毕业设计。定期为我们检查指导,而且在遇到问题的时候,总是鼓励我们多去想办法解决;其次我觉得此次毕业设计能够顺利完成的主要原因还有:我平时对java知识的一些相关自学,以及在外面的四个月工作经验,我觉得要不是平时自己不断的积累,从而学到了不少的技术,此次毕业设计在这么短时间之内是肯定不能完成的。然后还要特别感谢大学四年来所有的任课老师老师,是他们认真细心的为我们打下计算机专业知识的基础。以前总是以为学学就可以了,没有认识到学习的重要性。到现在自己做设计才知道,其实计算机所有的环节都是环环相扣的,少了哪一环都不是很好。所以学习知识要稳扎稳打,脚踏实地。在此感谢系里面的所有任课老师们辛勤的教导换来了我们今天的成长与进步。最后深深地感谢我们成长的摇篮,为我们提供了好的学习环境还有舒适的生活环境,感谢您——山西大学工程学院! 参考文献[1]明日科技等编著.实战突击:javaweb项目整合开发[M].北京:电子工业出版社,2011.[2]施红芹,谢军,彭海朋编著.动态网页程序设计[M].北京:清华大学出版社,2006.[3]陈凌云编著.精通EclipseWeb开发[M].北京:人民邮电出版社,2006.10[4]林宏基编著.Web开发技术教程(第二版)[M].北京:北京大学出版社,2007.[5]武延军,黄飞跃.精通JSP编程技术[M].北京:人民邮电出版社,2001.8[6][美]KevinDuffey,VikramGoyal,TedHusted,等.JSP站点设计编程指南[M].王军等译.北京:电子工业出版社,2002.[7][美]VivekChopra,JonEaves,RupertJones,等.JSP高级程序设计[M].北京:人民邮电出版社,2006.[8]陈海山著.深入JavaServlet网络编程[M].北京:清华大学出版社,2002.[9]马斌,徐越倩.论专业市场与电子商务的互动发展[J].商业经济与管理,2005(3).[10]清宏计算机工作室.JSP编程技巧[M].北京:机械工业出版社,2000.1[11]张健.XML技术在网上购物系统中的应用与安全分析[J].科技创新导报.2008(14):2-3.[12]李贤华.基于JSP技术的大型网上购物系统的设计与实现[J].计算机与现代化.2008(8):82-84,89. '