基于web平台的以mvc架构为模式的网上书店_第1页
基于web平台的以mvc架构为模式的网上书店_第2页
基于web平台的以mvc架构为模式的网上书店_第3页
基于web平台的以mvc架构为模式的网上书店_第4页
基于web平台的以mvc架构为模式的网上书店_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要当今社会经济发展越来越快,INTERNET技术迅猛发展,网络的普及率越来越高,现在有越来越多的人在网上购物,因此,我们开发了一个网上书城平台,以便于更多的人能够更方便的买到自己所想要的物美价廉的书本次毕业设计的题目是一个基于WEB平台的以MVC架构为模式的网上书店,为广大热爱读书的人提供了一个可以更便捷买到书的途径,还可以在上面留言,给广大浏览者和管理员建议本系统主要用到的技术JSP,SEVERLETS,HIBERNATE,STRUTS等,以ECLIPSE作为开发工具,功能上基本实现了一个购物平台的几个模块用户登录,注册,留言,流览,查询,个人信息查询,修改管理员登录,查询,添加,查找,对留言的管理等各项功能,该系统界面美观,使用方便关键词JSP,SERVLETS,STRUCTS,HIBERNATEECLIPSE网上图书订购系统ABSTRACTTHESOCIOECONOMICDEVELOPMENTISNOWGETTINGQUICKERANDQUICKER,THEINTERNETTECHNOLOGYRAPIDDEVELOPMENT,THENETWORKPOPULARRATEISGETTINGHIGHERANDHIGHER,NOWHASMOREANDMOREPEOPLEINONLINESHOPPING,THEREFORE,WEHAVEDEVELOPEDONLINEBOOKCITYPLATFORM,ISADVANTAGEOUSFORTHEEXCELLENTINQUALITYANDREASONABLEINPRICEBOOKWHICHMOREPEOPLECANMORECONVENIENTBUYITSELFTOWANTTHISGRADUATIONPROJECTSTOPICISONEBASEDONTHEWEBPLATFORMBYTHEMVCCONSTRUCTIONFORTHEPATTERNONLINEBOOKSTORE,THEHUMANWHOSTUDIEDFORTHEGENERALDEEPLOVESPROVIDESTOBEPOSSIBLETOBUYTHEBOOKCONVENIENTLYTHEWAY,BUTMIGHTALSOINTHEABOVEMESSAGE,ANDTHEMANAGERSUGGESTEDFORTHEGENERALBROWSINGTHISSYSTEMMAINLYUSESTECHNOLOGYJSP,SEVERLETS,HIBERNATE,STRUTSANDSOON,TOOKTHEDEVELOPMENTKITBYECLIPSE,INTHEFUNCTIONHASREALIZEDSHOPPINGPLATFORMSEVERALMODULESBASICALLYTHEUSERREGISTERS,THEREGISTRATION,THEMESSAGE,BROWSES,THEINQUIRY,INDIVIDUALINFORMATIONINQUIRES,REVISIONTHEMANAGERREGISTERS,THEINQUIRY,THEINCREASE,THESEARCH,TOTHEMESSAGEMANAGEMENTANDSOONEACHFUNCTION,THISSYSTEMCONTACTSURFACEISARTISTIC,EASYTOOPERATEKEYWORDJSP,SERVLETS,STRUCTS,HIBERNATEECLIPSEONLINEBOOKSORDERSYSTEM摘要1ABSTRACT11前绪32开发环境及开发工具的介绍421JSP概述423STRUCTS概述524服务器配置7241TOMCAT安装及配置826MYSQL的安装和配置113系统需求分析及总体设计1331需求分析1332系统功能模块设计1333数据库需求分析1334类图1435用例图14351用户管理用例14352管理员管理用例1536实体关系图1637ER图174网上图书销售系统总体设计2141数据库实现2242用HIBERNATE封装连接数据库275系统详细设计2951前台部分29511前台总体框架29512用户管理模块29513用户资料修改29514购物车模块29515订单查询模块33516留言板模块3352后台部分33521后台总体框架33522管理员登录34523后台首页运行中心37524商品管理38525添加商品39526订单管理43527用户管理44528添加链接46529管理员管理476软件测试4861什么是软件测试4862单元测试48621登录测试48622管理员管理48623用户管理49624产品管理4963集成测试49总结49致谢50参考文献50附录一英文资料部分51附录二英文翻译591前绪互联网覆盖面越来越广泛,在我们身边随处可见,从国内外要闻到到衣食住行,可以说网络是无处不在,由于网络来到了我们身边,我们的生活发生巨大的变化,在网络上,我们可以交流信息,了解我们需要的信息,更能在网络上买到我们想要的东西,并且和志向相同的人共同探讨,互联网提供了一个便捷的交流平台,网上图书购物平台就是一个典型的网络应用,而且是个多人登录多人交流的购物系统,它为世界上每一个爱号读书的人提供了很好的途径,把人和书更好的结合了起来,也增加了和其他人的交流机会,使知识通过互联网无限的传播,交流自己的看法和经验,如今网上书城越来越多,使得很多人不用跑书店就可以在家选择自己喜欢的书,省了很多力气,使得人们能有更多的时间从事在学习上,所以我选择了作为我的毕业设计,通过自己和团队人的共同努力,设计和实现了一个网上书城现在人们对信息量的要求越来越高,需要获取大量的信息和知识,网上书店的实现也是必然的,如今随着社会的发展越来越快,人们要求的是效率,怎么样花最少的时间获得更大的效率是人们所追求的所以我们应该把最便捷的方式展现给用户2开发环境及开发工具的介绍21JSP概述JSP(IAVASERVERPAGES)是由SUN公司在JAVA语言上开发出来的一种动态网页制作技术,实现普通静态HTML和动态HTML混合编码的技术其可使您可以将网页中的动态部分和静态的HTML相分离。您可以使用平常得心应手的工具并按照平常的方式来书写HTML语句。然后,将动态部分用特殊的标记嵌入即可,这些标记常常以”开始并以”结束。您要将文件以”JSP”为扩展名,并将它放置到任何您可以放置普通WEB页面的路径下。尽管JSP文件看起来更象是HTML文件而不是SERVLET文件,但,事实上,它恰恰将转换为SERVLET文件,其中的静态HTML仅仅用来输出SERVLET服务方法返回的信息。如果JSPPAGES已经被转换为SERVLET且SERVLET被编译进而被装载(在第一次被REQUEST时),当您再次REQUEST此JSP页面时,将察觉不到一瞬的延迟。也请留意这个现象,一些WEBSERVERS允许您为它定义别名,从而,好象一个URL是指向一个HTML,但事实上它指向的是一个SERVLET或JSPPAGES构造一个JSPPAGE,除了可内嵌的规则的HTML,还有三类主要的JSP元素SCRIPTINGELEMENTS,DIRECTIVES,和ACTIONS使用SCRIPTINGELEMENTS您可以定义最终转换为SERVLET的部分,DIRECTIVES使您可以控制这个SERVLET的整体结构,而ACTIONS使您可以指定可重用的已有组件,另外,还可控制JSP引擎的运行。JSP文件可以同时包含HTML和一些嵌入代码,这些嵌入代码允许网页设计从运行在服务器上的JAVA程序中接收数据。当网页被用户请求时,HTTP服务器对其进行处理,HTML部分直接通过,代码部分则被执行,由此产生的动态内容合并到网页中然后发往用户。绝大多数JSP页面依赖于可重用的,跨平台的组件(JAVABEANS或者ENTERPRISEJAVABEANSTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡22SEVERLETS概述SERVLETS是用JAVA语言实现的独立于协议和平台的服务器端组件,它动态扩展了支持JAVA的服务器,它可以被插入到支持JAVA的WEB服务器中以提供定制服务,包括1增加新的特性服务2页面内容的动态改变(RUNTIMECHANGES)3页面显示的动态改变(RUNTIMECHANGES)4对新的标准协议的支持例如FTP5对用户定制协议的支持SERVLETS被设计在请求/应答(REQUEST/RESPONSE)处理模式下工作,在该模式下,客户向服务器发送请求消息,服务器则通过发送应答消息予以回复SERVLETS是对JAVA环境的一个功能强大的补充,具有快速、安全、可靠和100纯JAVA的优点。因为SERVLETS被插入到已经存在的服务器中运行,可以有效利用大量现成代码和技术,所有有关网络连接、协议协商、类装载等等工作都可以由服务器代劳,极大地减少了重复工作。SERVLETS可以并发处理多个请求,相互的请求之间能够被同步,支持应用程序间的协作,应用实例之一是在线会议。复杂的工作可以被设计由多个活动代理(ACTIVEAGENTS)共同承担,每个代理作为SERVLET被实现和载入,各个代理之间可以相互传递数据。SERVLET可以把请求转发给其他服务器或者其他SERVLET,这一技术可以有效地在提供同一服务内容的多个服务器间实现负载平衡。由于其强大功能和灵活性,SERVLETS对于系统体系结构规划具有重要意义,它们可以实施基于中间层(MIDDLETIER)的应用处理,可以作为客户的PROXY代理,甚至可以通过支持新的协议或特定服务来充实或更新中间层的服务内容。在通常所说的三层客户/服务器系统(THREETIERCLIENT/SERVERSYSTEMS)中,中间层作为应用程序服务器(APPLICATIONSERVER),连接了前端客户(如WEB浏览器)和后端服务及数据。通过中间层的使用,大量处理工作得以从前、后端分流,使前端客户更轻、更快,使后端服务更加专注其任务。SERVLETS非常适合用于中间层处理,一个明显的好处是可以简化连接管理,数据库连接需要较大的系统开销,通过建立和有效管理数据库连接池(POOL),一组SERVLETS可以容易地处理成百上千个客户连接。23STRUCTS概述STRUTS是APACHE基金会JAKARTA项目组的一个OPENSOURCE项目,它采用MVC模式,能够很好地帮助JAVA开发者利用J2EE开发WEB应用。和其他的JAVA架构一样,STRUTS也是面向对象设计,将MVC模式”分离显示逻辑和业务逻辑”的能力发挥得淋漓尽致。STRUCTS框架的核心是一个弹性的控制层,基于如JAVASERVLETS,JAVABEANS,RESOURCEBUNDLES与XML等标准技术,以及JAKARTACOMMONS的一些类库。STRUTS有一组相互协作的类(组件)、SERLVET以及JSPTAGLIB组成。基于STRUTS构架的WEB应用程序基本上符合JSPMODEL2的设计标准,可以说是一个传统MVC设计模式的一种变化类型。STRUTS有其自己的控制器(CONTROLLER),同时整合了其他的一些技术去实现模型层(MODEL)和视图层(VIEW)。在模型层,STRUTS可以很容易的与数据访问技术相结合,如JDBC/EJB,以及其它第三方类库,如HIBERNATE/IBATIS,或者OBJECTRELATIONALBRIDGE对象关系桥。在视图层,STRUTS能够与JSP,包括JSTL与JSF,以及VELOCITY模板,XSLT与其它表示层技术。STRUTS是MVC的一种实现,它将SERVLET和JSP标记(属于J2EE规范)用作实现的一部分。STRUTS继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。STRUTS是MVC的一种实现,它将SERVLET和JSP标记(属于J2EE规范)用作实现的一部分。STRUTS继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。STRUTS的工作原理,如下图所示MVC角度来看看STRUTS的体系结构(MODEL2)1)模型(MODEL)在STRUTS的体系结构中,模型分为两个部分系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ACTINFORMBEAN表示。根据设计或应用程序复杂度的不同,这些BEAN可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的BEAN调用。比如购物车BEAN,它拥有用户购买商品的信息,可能还有CHECKOUT方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在ACTION类,它是STRUTS框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与ACTION类所扮演的角色(决定做什么)分开。2)视图(VIEW)视图主要由JSP建立,STRUTS包含扩展自定义标签库(TAGLIB),可以简化创建完全国际化用户界面的过程。目前的标签库包括BEANTAGS、HTMLTAGS、LOGICTAGS、NESTEDTAGS以及TEMPLATETAGS等。3)控制器(CONTROLLER)在STRUTS中,基本的控制器组件是ACTIONSERVLET类中的实例SERVELT,实际使用的SERVLET在配置文件中由一组映射(由ACTIONMAPPING类进行描述)进行定义。对于业务逻辑的操作则主要由ACTION、ACTIONMAPPING、ACTIONFORWARD这几个组件协调完成的,其中ACTION扮演了真正的业务逻辑的实现者,ACTIONMAPPING与ACTIONFORWARD则指定了不同业务逻辑或流程的运行方向。STRUTSCONFIGXML文件配置控制器。MVC工作原理24服务器配置第一步从官方网站HTTP/JAVASUNCOM下载该软件的最新版本。我所下载的是JDK1_5_0_06WINDOWSI586PEXE文件。第二步双击EXE文件,安装在CPROGRAMFILESJAVAJDK150_06。第三步JDK的环境配置在WINDOWS中用鼠标指向我的电脑,按右键,选择“属性”,在“系统特性”表单内选择“高级”标签,在“高级”标签内选择“环境变量”,在系统变量中加入变量JAVA_HOME变量名为CPROGRAMFILESJAVAJDK150_06,CLASSPATH变量值为CPROGRAMFILESJAVAJDK150_06LIBDTJARCPROGRAMFILESJAVAJDK150_06LIBTOOLSJARCPROGRAMFILESJAVAJDK150_06和PATH变量值为CPROGRAMFILESJAVAJDK150_06BIN。安装和配置完毕后,在“命令提示符”中输入JAVAC,会出现如图1所示,则说明JDK安装和配置都是正确的。图1JAVAC调试界面241TOMCAT安装及配置直接运行下载的APACHETOMCAT5517EXE文件,按照一般的WINDOWS程序安装步骤即可安装好TOMCAT,安装时它会自动寻找JDK的位置。安装过程中需要选择一个文件夹作为TOMCAT的安装目录。我选择安装的位置是CTOMCAT55。安装完成以后,添加一个TOMCAT的环境变量,添加方法和JDK的环境变量的添加方法相同,设置变量名为TOMCAT_HOME,变量值为CTOMCAT55。设置完毕后就可以运行TOMCAT服务器了。TOMCAT成功启动后,在浏览器中输入HTTP/LOCALHOST8080/,如果出现欢迎界面,则说明TOMCAT安装成功。欢迎界面如图2所示。图2TOMCAT欢迎界面25HIBERNATE概述HIBERNATE是一个免费的开源JAVA包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通JAVA对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。大多数应用程序都需要处理数据。JAVA应用程序运行时,往往把数据封装为相互连接的对象网络,但是当程序结束时,这些对象就会消失在一团逻辑中,所以需要有一些保存它们的方法。有时候,甚至在编写应用程序之前,数据就已经存在了,所以需要有读入它们和将其表示为对象的方法。手动编写代码来执行这些任务不仅单调乏味、易于出错,而且会占用整个应用程序的很大一部分开发工作量。这类工具有很多,从昂贵的商业产品到内置于J2EE中的EJB标准。然而,在很多情况下,这些工具具有自身的复杂性,使得开发人员必须学习使用它们的详细规则,并修改组成应用程序的类以满足映射系统的需要。由于这些工具为应付更加严格和复杂的企业需求而不断发展,于是在比较简单和常见的场景中,使用它们所面临的复杂性反而盖过了所能获得的好处。这引起了一场革命,促进了轻量级解决方案的出现,而HIBERNATE就是这样的一个例子。HIBERNATE的工作方式HIBERNATE不会对您造成妨碍,也不会强迫您修改对象的行为方式。它们不需要实现任何不可思议的接口以便能够持续存在。惟一需要做的就是创建一份XML”映射文档“,告诉HIBERNATE您希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据。与其他解决方案相比,它几乎已经很完美了。运行时,HIBERNATE读取映射文档,然后动态构建JAVA类,以便管理数据库与JAVA之间的转换。在HIBERNATE中有一个简单而直观的API,用于对数据库所表示的对象执行查询。要修改这些对象,(一般情况下)只需在程序中与它们进行交互,然后告诉HIBERNATE保存修改即可。类似地,创建新对象也很简单;只需以常规方式创建它们,然后告诉HIBERNATE有关它们的信息,这样就能在数据库中保存它们。HIBERNATEAPI学习起来很简单,而且它与程序流的交互相当自然。在适当的位置调用它,就可以达成目的。它带来了很多自动化和代码节省方面的好处,所以花一点时间学习它是值得的。而且还可以获得另一个好处,即代码不用关心要使用的数据库种类(否则的话甚至必须知道)。我所在的公司就曾有过在开发过程后期被迫更换数据库厂商的经历。这会造成巨大的灾难,但是借助于HIBERNATE,只需要简单地修改HIBERNATE配置文件即可。这里的讨论假定您已经通过创建HIBERNATE映射文档,建立了一个关系数据库,并且拥有要映射的JAVA类。有一个HIBERNATE”工具集“可在编译时使用,以支持不同的工作流。例如,如果您已经拥有JAVA类和映射文档,HIBERNATE可以为您创建(或更新)必需的数据库表。或者,仅仅从映射文档开始,HIBERNATE也能够生成数据类。或者,它可以反向设计您的数据库和类,从而拟定映射文档。还有一些用于ECLIPSE的ALPHA插件,它们可以在IDE中提供智能的编辑支持以及对这些工具的图形访问。如果您使用的是HIBERNATE2环境,这些工具鲜有提供,但是存在可用的第三方工具。HIBERNATE的工作原理HIBERNATE的工作就是为OBJECT和RALATIONAL之间提供一个映射,其工作流程如下面的图所示。1启动HIBERNATE,如果在系统中添加HIBERNATE的支持,此处加载由系统自动完成。2读取HIBERNATECFGXML或者HIBERNATEPROPERTIES文件的配置信息,并将其加载为实例。3构建SESSIONFACTORY实例(包含二级缓存)。4从SESSIONFACTORY中取得SESSION对象,从而可以调用其方法,对数据库进行操作,实现ORM的功能。HIBERNATE可以通过一个XML的MAPPING文件把一个POJO(PLAINOLDJAVAOBJECT)和数据库中的表对应起来,在这个XML文件(一般命名为HBMXML)中,我们可以配置好OBJECT和数据库中标的映射关系,然后把这个MAPPING加入到HIBERNATECFGXML中,这样HIBERNATE在启动时就可以加载这些MAPPING,并可以根据配置文件对对象实现自动的加载,并且可以对这些OBJECT实习自动的维护。HIBERNATE还提供查询语句(HQL)供应用程序使用,HIBERNATE对数据访问实现封装,还可以对查询语句的发送实现管理,达到优化的目的,能够有效减少数据库的访问频率。26MYSQL的安装和配置以下是部分截图安装时一般采用默认路径为了支持中文,在下面的列表框中学者JB2312切记3系统需求分析及总体设计31需求分析此基于JSP的购书网站分前台功能和后台功能1前台部分由用户使用,主要包括用户注册,用户登录,用户购买书,用户留言,个人资料管理,购物车管理2后台部分由管理员使用,主要包括管理员身份验证,订单管理,留言板管理,商品管理,用户信息管理,连接信息管理32系统功能模块设计功能结构图如下图9功能模块设计图从图中可以看出,网上购物系统可以分为前台和后台两个部分,前台部分由用户使用,主要包括用户注册,生成订单,购物车管理,查看购物车,查看留言,订购产品,订单查询和发布留言7个模块;后台部分由管理员使用,主要包括管理员身份验证,商品管理,处理订单,用户信息管理,留言管理,连接信息管理6个模块。33数据库需求分析数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有MYSQL,SQLSERVER,ORACLE等。我采用了MYSQL数据库管理系统,建立的数据库名为EC_PORT。整个系统功能需要以下数据项用户用户ID、用户名称、登录密码、性别、邮箱地址、联系地址、联系电话、留言用户姓名、主题名称、留言内容。商品商品ID、名称、价格、类型、简要介绍、订单订单号、用户名、真实姓名、EMAIL、地址、邮编、付款方式、联系方式,定单状态管理员管理员ID、管理员名称、管理员密码、管理员电话、管理员邮箱。网上购书系统网上购书系统前台功能后台功能用户管理用户购买书用户留言个人资料管理留言板管理商品管理用户信息管理链接信息管理留言管理订单管理管理员身份验证34类关系图35用例图351用户管理用例352管理员管理用例36实体关系图37ER图1USER用户USER有11个属性,分别是USERID,USERNAME,PASSWORD,CREATETIME,ADDR,TELEPHONE,E_MA,GENDER,AGE,STATE,ROLEUSER的ER如图371所示图371USERNNAMEUSERIDPASSWORDCREATETIMEROLEUSERSTATE2USERITEM收货人USERITEM有7个属性,分别是USER_ITEM_ID,ITEM_NAME,ITEM_ADDRESS,ITEM_EMAIL,ITEM_MOBILELPHONE,ITEM_OFFICEPHONE,ITEM_POSTCODEUSERITEM的ER图372所示图3723MESSAGE用户留言MESSAGE有4个属性,分别是MESSAGEID,TITLE,CONTENT,USERNAMEMESSAGE的ER图如图373所示图3734MODULE管理员权限MODULE有2个属性,分别是MODULEID,MODULENAMEMODULE的ER图如图374所示ITEM_ADDRESSITEM_MOBILEPHONEUSER_ITEM_IDITEM_OFFICEPHONEITEM_POSTCODEUSERITEMITEM_NAMEITEM_EMAILCONTENTMESSAGEIDMESSAGETITLEUSERNAMEMODULE_IDMODULE_NAME图3745ADMIN管理员ADMIN有5个属性,分别是ADMINID,ADMINNAME,PASSWORD,EMAIL,TELADMIN的ER图如图375所示图3756CATALOG书籍分类CATALOG有3个属性,分别是CATALOGID,CATALOGNAME,DESCRIPTIONCATALOG的ER图如图376所示MODULEPASSWORDADMINIDEMAILTELADMINADMINNAMEDESCRIPTION图3767PRODUCT商品PRODUCT有11个属性,分别是NAME,ISBN,PRINTER,AUTHOR,PRICE,PRODUCTID,BOOKNUM,STATE,IMAGEPATH,DESCRIPTION,CREATETIMEPRODUCT的ER图如图377所示NAMEISBNPRINTERAUTHORBOOKNUMDESCRIPTIONIMAGEPATHCREATETIMEPRICESTATEPRODUCTIDPRODUCT图3778ORDER定单ORDER有5个属性,分别是ORDERID,TOTALPRICE,ORDERSTATE,PAYINFO,CREATETIMEORDER的ER图如图378所示CATALOGIDCATALOGCATALOGNAME图3789ORDERITEM定单条目ORDERITEM有2个属性,分别是ORDER_ITEM_ID,QUALITYORDERITEM的ER图如图379所示图37910对各个类的ER图进行,并标出他们之间的对应关系,得到整体ER图其中一个USER用户可以有多个MESSAGE留言,可以添加多个USERITEM收获人,可以创建多个ORDER定单一个USERITEM收获人可以创建多个ORDER定单一个ORDER定单可以增加多个ORDERITEM定单条目一个PRODUCT商品可以存在于多个ORDERITEM定单条目中一个CATALOG商品类型中可以有多个此类的PRODUCT商品一个ADMIN管理员可以有多个MODULE权限,一个MODULE权限可以为多个ADMIN管理员所有ORDERSTATEORDERIDCREATETIMEPAYINFOORDERTOTALPRICEORDER_ITEM_IDORDER_ITEMQUALITYMESSAGEN11N11NN1NN1N1MNTALKUSERCREATEORDERADDORDERITEMHAVEPRODUCTCREATECATALOGMODULEHAVEADMINADDUSERITEMCREATE4网上图书销售系统总体设计设计思想该系统是基于B/S架构下的多层结构应用系统。由于每个软件都有自身的特点,因此不可能提供一个适用于所有软件的结构体系。总的来说,采用分层结构的设计思想,可以让每个层由一组相关的类或组件构成,共同完成特定的功能。层与层之间存在自上而下的依赖关系,上层组件会依赖下层组件的API,而下层组件则不依赖于上层组件。例如表述层依赖于业务逻辑层,而业务逻辑层依赖于数据库层。并且每个层对对上层公开API,但具体的实现细节对外透明。当某一层发生变化,只要API不变,不会影响其他层的实现。如图下图在数据库层,该系统用到MYSQL数据库,持久层用到HIBERNATE技术,业务逻辑层用普通JAVABEAN实现,表述层运用基于STRUTS的MVC设计模式。41数据库实现E_CATALOG描述物品的信息建表语句CREATETABLEE_CATALOGCATALOGIDINT11NOTNULLAUTO_INCREMENT,CATALOGNAMEVARCHAR100NOTNULL,DESCRIPTIONVARCHAR100DEFAULTNULL,PRIMARYKEYCATALOGID表2是对E_CATALOG的描述列名说明类型备注CATALOGID物品IDINT不允许空,主健CATALOGNAME物品名VARCHAR不允许空DESCRIPTION物品描述VARCHAR不允许空E_PRODUCT描述书的信息建表语句CREATETABLEE_PRODUCTPRODUCTIDINT10NOTNULLAUTO_INCREMENT,NAMEVARCHAR50NOTNULL,ISBNVARCHAR100DEFAULTNULL,PRINTERVARCHAR50DEFAULTNULL,AUTHORVARCHAR50DEFAULTNULL,PRICEDOUBLEDEFAULTNULL,BOOKNUMINT4DEFAULTNULL,CATALOGIDINT10NOTNULL,DESCRIPTIONVARCHAR1000DEFAULTNULL,IMAGEPATHVARCHAR100DEFAULTNULL,CREATETIMEDATEDEFAULTNULL,STATEINT2DEFAULT0,PRIMARYKEYPRODUCTID,KEYCATALOGIDCATALOGID表3是对E_PRODUCT的描述列名说明类型备注PRODUCTID书的IDINT不允许空,主健NAME书名VARCHAR不允许空ISBN书的编号VARCHAR可以为空PRINTER书的出版社VARCHAR可以为空AUTHOR书的作者VARCHAR可以为空PRICE书的价格DOUBLE可以为空BOOKNUM书的页数INT可以为空CATALOGID物品IDINT不允许空DESCRIPTION书的描述VARCHAR可以为空IMAGEPATH书的信息VARCHAR可以为空CREATETIME出版日期VARCHAR可以为空STATE书的状态INT可以为空E_USER描述用户信息CREATETABLEE_USERUSERIDINT11NOTNULLAUTO_INCREMENT,USERNAMEVARCHAR30NOTNULL,PASSWORDVARCHAR15NOTNULL,CREATETIMEDATEDEFAULTNULL,ADDRVARCHAR30,TELEPHONEVARCHAR30,E_MAVARCHAR30,GENDERVARCHAR30,AGEINT10,STATEINT11DEFAULT0,ROLEINT11DEFAULT0,PRIMARYKEYUSERID该表主要用来保存一个用户,并且引用用户表主键为外键,与E_ORDER表为一对多的关系)表4是对E_USER的描述列名说明类型备注USERID用户IDINT不允许空,主健USERNAME用户名VARCHAR不允许空PASSWORD密码VARCHAR不允许空CREATETIME注册时间DATE可以为空ADDR地址VARCHAR可以为空TELEPHONE电话VARCHAR可以为空E_MA邮箱VARCHAR可以为空GENDER性别VARCHAR可以为空AGE年龄INT可以为空E_USER_ITEM描述收货人购物信息建表语句CREATETABLEE_USER_ITEMUSER_ITEM_IDINT11NOTNULLAUTO_INCREMENT,ITEM_NAMEVARCHAR30DEFAULTNULL,ITEM_ADDRESSVARCHAR100DEFAULTNULL,ITEM_POSTCODEVARCHAR10DEFAULTNULL,ITEM_OFFICEPHONEVARCHAR50DEFAULTNULL,ITEM_MOBILEPHONEVARCHAR20DEFAULTNULL,ITEM_EMAILVARCHAR50DEFAULTNULL,USERIDINT12NOTNULL,PRIMARYKEYUSER_ITEM_ID,KEYUSERIDUSERID表5是对E_USER_ITEM的描述列名说明类型备注USER_ITEM_ID收货人每项IDINT不允许空,主健ITEM_NAME收货人的名字VARCHAR可以为空ITEM_ADDRESS收货人的地址VARCHAR可以为空ITEM_POSTCODE收货人的邮编VARCHAR可以为空ITEM_OFFICEPHONE办公室电话VARCHAR可以为空ITEM_MOBILEPHONE移动电话VARCHAR可以为空ITEM_EMAIL收货人人邮箱VARCHAR可以为空USERID用户IDINT不允许空,外健E_ORDER描述定单信息建表语句CREATETABLEE_ORDERORDERIDINT11NOTNULLAUTO_INCREMENT,TOTALPRICEDOUBLEDEFAULT0,ORDERSTATEINT11DEFAULT0,PAYINFOINT11DEFAULTNULL,CREATETIMEDATEDEFAULTNULL,USERIDINT11NOTNULL,USER_ITEM_IDINT11NOTNULL,PRIMARYKEYORDERID,KEYUSER_ITEM_IDUSER_ITEM_ID,KEYUSERIDUSERID该表主要用来保存一个订单,并且引用用户表主键为外键,与USER表为一对多的关系)表6是对E_ORDER的描述列名说明类型备注ORDERID定单IDINT不允许空,主健TOTALPRICE定单价格DOUBLE可以为空ORDERSTATE定单状态INT可以为空PAYINFO付款方式INT可以为空CREATETIME生成日期DATE可以为空USERID用户IDINT不允许空,外健USER_ITEM_ID收货人IDINT不允许空,外健E_ORDER_ITEM描述定单信息建表语句CREATETABLEE_ORDER_ITEMORDER_ITEM_IDINT11NOTNULLAUTO_INCREMENT,PRODUCTIDINT11NOTNULL,ORDERIDINT11NOTNULL,QUALITYINT11NOTNULL,PRIMARYKEYORDER_ITEM_ID,KEYPRODUCTIDPRODUCTID,KEYORDERIDORDERID表7是对E_ORDER_ITEM的描述列名说明类型备注ORDER_ITEM_ID定单项IDINT不允许空,主健PRODUCTID产品IDINT不允许空,外健ORDERID定单IDINT不允许空,外健QUALITY产品类型INT不允许空E_ADMIN描述管理员信息建表语句CREATETABLEE_ADMINADMIN_IDINTEGERAUTO_INCREMENT,ADMIN_NAMEVARCHAR32,PASSWORDVARCHAR32,TELVARCHAR32,EMAILVARCHAR32,PRIMARYKEYADMIN_ID表8是对E_ADMIN的描述列名说明类型备注ADMIN_ID管理员IDINT不允许空,主健ADMIN_NAME管理员姓名VARCHAR不允许空PASSWORD管理员密码VARCHAR不允许空TEL电话VARCHAR可以为空EMAIL邮箱VARCHAR可以为空E_MODULE描述管理员权限建表语句CREATETABLEE_MODULEMODULE_IDINTEGERAUTO_INCREMENT,MODULE_NAMEVARCHAR32,PRIMARYKEYMODULE_ID该表主要用来保存一个权限,并且引用用户表主键为外键,与E_ADMIN表为一对多的关系)表9是对E_MODULE的描述列名说明类型备注ADM_ID关联表IDINT不允许空,外健MOD_ID权限IDINT不允许空,主健E_ADM_RIGHTS描述管理员与权限关联的建表语句CREATETABLEE_ADM_RIGHTSADM_IDINTEGERREFERENCESE_ADMINADMIN_ID,MOD_IDINTEGERREFERENCESE_MODULEMODULE_ID,PRIMARYKEYADM_ID,MOD_ID表10是对E_ADM_RIGHTS的描述列名说明类型备注ADM_ID管理员IDINT不允许空,外健MOD_ID权限IDINT不允许空,外健E_MESSAGE描述用户留言建表语句CREATETABLEE_MESSAGEMESSAGEIDINTEGERAUTO_INCREMENT,TILEVARCHAR32,CONTENTVARCHAR32,PRIMARYKEYMESSAGEID表11是对E_MESSAGE的描述列名说明类型备注MESSAGEID留言IDINT不允许空,主健TILE标题VARCHAR不允许空CONTENT留言信息VARCHAR不允许空42用HIBERNATE封装连接数据库在本系统中需要多次连接数据库,写成一个工具类关键代码如下PUBLICCLASSHIBERNATESESSIONFACTORYPRIVATESTATICSTRINGCONFIG_FILE_LOCATION“/HIBERNATECFGXML”PRIVATESTATICFINALTHREADLOCALTHREADLOCALNEWTHREADLOCALPRIVATESTATICCONFIGURATIONCONFIGURATIONNEWCONFIGURATIONPRIVATESTATICORGHIBERNATESESSIONFACTORYSESSIONFACTORYPRIVATESTATICSTRINGCONFIGFILECONFIG_FILE_LOCATIONSTATICTRYCONFIGURATIONCONFIGURECONFIGFILESESSIONFACTORYCONFIGURATIONBUILDSESSIONFACTORYCATCHEXCEPTIONESYSTEMERRPRINTLN“ERRORCREATINGSESSIONFACTORY”EPRINTSTACKTRACEPRIVATEHIBERNATESESSIONFACTORYPUBLICSTATICSESSIONGETSESSIONTHROWSHIBERNATEEXCEPTIONSESSIONSESSIONSESSIONTHREADLOCALGETIFSESSIONNULL|SESSIONISOPENIFSESSIONFACTORYNULLREBUILDSESSIONFACTORYSESSIONSESSIONFACTORYNULLSESSIONFACTORYOPENSESSIONNULLTHREADLOCALSETSESSIONRETURNSESSIONPUBLICSTATICVOIDREBUILDSESSIONFACTORYTRYCONFIGURATIONCONFIGURECONFIGFILESESSIONFACTORYCONFIGURATIONBUILDSESSIONFACTORYCATCHEXCEPTIONESYSTEMERRPRINTLN“ERRORCREATINGSESSIONFACTORY”EPRINTSTACKTRACEPUBLICSTATICVOIDCLOSESESSIONTHROWSHIBERNATEEXCEPTIONSESSIONSESSIONSESSIONTHREADLOCALGETTHREADLOCALSETNULLIFSESSIONNULLSESSIONCLOSE5系统详细设计51前台部分511前台总体框架前台部分由用户使用,包括用户注册,购物车管理,个人资料管理等几个部分。1模块功能介绍用户管理为了便于网站的管理,必须有一套完整的用户管理体系。该网站用户管理模块由用户注册,用户登陆,修改密码3部分组成。订单查询登陆用户可以通过订单号查询订单。购物车所选商品须通过购物车进行保存,然后生成订单。修改个人资料为了保护用户信息不受非法侵害,用户登陆后即可对个人的注册信息进行修改。留言板用户可以查看和添加留言信息。512用户管理模块用户管理模块主要包括用户注册,登录及修改密码3个部分513用户资料修改用户资料修改在前台主页上,单击“修改资料”链接,进入用户修改资料页面,该页面主要用于修改用户信息514购物车模块在超市购物,可以根据自己的需要将很多的物品挑选到购物车(篮)中。而在网上虚拟的购书商城中,通常都会采用一种被称做“购物车”的技术来模拟现实生活。这种技术用起来十分方便,不但可以随时添加,查看,修改,清空购物车中的内容,还可以随时去收银台结帐1添加购物车、添加购物车就是把用户选中的商品放在购物车中。当用户在前台首页中单击商品展示区的“加入购物车”按钮时,系统会将该商品的详细信息展示在查看物品清单页中关键代码如下BACKGROUND”/IMAGES/BG2GIF”WIDTH”合计/IMAGES/BG2GIF”WIDTH”操作/BIZ/CARTDO”NAME”F1”STATUSCOUNTCARPRODUCTSPRODUCTNAMECARPRODUCTSPRODUCTPRICECARPRODUCTSTOTAL/BIZ/CARTDOMETHODREMOVE”总计CARTTOTAL人民币/BIZ/ORDERDOMETHODCONFIRMORDER”/PAGE/PRODUCTDOMETHODLISTALL”购物车内还没有商品/BIZ/CARTDOMETHODREMOVEALL”515订单查询模块用户提交订单后,通常产生的订单号查询信息及执行状态。用户在网站首页中单击“订单查询”超链接,进入输入订单号页面可以查看定单516留言板模块留言板是一个商务网站中不可少的一部分,他可以增进用户与网站之间的交流。添加留言是用户与用户,以及用户与网站之间的一种交流模式,只有把用户想要表达的内容添加到数据库中,才能在浏览留言板中显示。用户在留言板中单击“留言版”超链接就可以打开添加留言页面,该页面用来提交用户输入的留言信息,留言信息写好后,可以点击提交按钮,显示提交成功,若点击浏览留言,可打开留言板页面,该页面显示所有用户的留言52后台部分521后台总体框架后台功能只允许具有管理员权限的用户使用,它是实现前台功能的基础。主要包括管理员身份验证,订单信息管理模块,添加商品模块,查询用户信息管理模块,添加链接模块,留言板管理模块组成后台功能介绍1功能模块介绍管理员身份验证为合法用户提供一个后台入口。订单信息管理模块管理员对用户订单的删除。添加商品模块向商品表插入前台首页展示的商品信息和对原有的商品进行修改和删除。查询用户信息管理模块查询注册所有用户,对一些非法或失信用户进行删除和修改密码操作。添加链接模块当操作出现错误时就转向该页面。留言管理删除留言。2后台文件结构网站后台文件结构522管理员登录从后台进入管理员登录页面,该页面的功能是对管理员身份验证,如果管理员不输入就点登录,会出现提示信息,让你输入用户名和密码,用户输入用户名和密码后单击“登录”按键,系统将判断用户名和密码的有效性,如果通过验证则转到后台首页,可以进行各种操作,反之则不给登录,该页面也是管理员进入后台管理的唯一途径。登录界面后台首页INDEXJSP添加商品ADDPRODUCTJSP定单管理LISTORDERJSP添加超级连接ERRORJSP用户信息管理LISTUSERJSP留言管理LISTMESSAGEJSP显示商品LI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论