为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

网上购书系统

2017-09-27 50页 doc 259KB 49阅读

用户头像

is_574951

暂无简介

举报
网上购书系统网上购书系统 题目:基于MVC的网上购书系统 系 别:计算机科学与工程 专 业:计算机科学与技术 姓 名:宋 德 路 学 号:061407231 指导教师:薛 冰 河南城建学院 2011年 5 月 27 日 摘要 随着电子计算机以及网络技术的飞速发展,国内外许多企业都在Internet上建立了自己的网站,为客户提供现代化的信息服务手段。网站已经成为一个企业数字化、网络化水平的重要体现。企业网站为用户提供更广泛、更方便快捷、更优质高效的信息服务,在更高层次、更多领域满足了用户的信息需求。 与此同时兴起的网上购书系...
网上购书系统
网上购书系统 题目:基于MVC的网上购书系统 系 别:计算机科学与工程 专 业:计算机科学与技术 姓 名:宋 德 路 学 号:061407231 指导教师:薛 冰 河南城建学院 2011年 5 月 27 日 摘要 随着电子计算机以及网络技术的飞速发展,国内外许多企业都在Internet上建立了自己的网站,为客户提供现代化的信息服务手段。网站已经成为一个企业数字化、网络化水平的重要体现。企业网站为用户提供更广泛、更方便快捷、更优质高效的信息服务,在更高层次、更多领域满足了用户的信息需求。 与此同时兴起的网上购书系统,在更广阔的范围上拉近了企业与客户的距离,不但节省了企业成本,提高了效率,而且也为用户节约了时间,是未来书籍销售的发展趋势。但是在国内,网上购书还处于起步阶段。因此本文针对一个网上购书网站,从环境的架设到代码的具体设计做了详细的分析。 本论文主要分四个部分: 第一部分首先介绍了网上购书系统相比传统营销模式的优点,然后简要介绍了网上购书系统的技术支持,探讨了系统的开发环境以及HTML、Jsp、Servlet、JavaBean、Hibernate等技术的原理。 第二部分对网上购书系统进行功能需求分析,完成MVC模式的架构,对数据库的设计做了详细的分析。 第三部分根据系统的功能需求分析,对管理员权限、用户的注册、用户登陆、书籍查找、购物车管理、订单管理等功能进行了详细设计,并列出关键代码。 第四部分通过网站试运行,对网上购书系统做了全面的测试,验证了JSP技术在网上购书系统中的应用意义。 关键词:网上购书,JSP,Servlet,Hibernate,,Oracle。 第 1 页 共 38页 ABSTRACT Following the rapid progress of computer and web technology, many enterprise all over the world began to build their own web site on Internet to provide modem information services for their client. Web site is becoming a symbol of an advanced enterprise. An enterprise web site provides more abroad, more convenient, more quickly and more higher quality services, fulfills the clients' information demands many fields and a much higher administrative level. Springing up at the same time with enterprise website, the online-shopping of books system drew the distance between the enterprise and the client more closely .It not only saved on the enterprise cost and increased the enterprise efficiency but also saved many time for clients. So the online-shopping of books is a trend for future business affairs. But in China, on line-shopping of books is a n new-arising phenomenon and it's not very well-rounded. So, aims at an actual online-shopping of books system, this article does some analysis from environmental spanning to the actual code designing. There are four apart in this article: 1. First, this article introduced online-shopping of books system's strong suit comparing with traditional shopping, and then it introduced the underlay of this system, and discussed the development of environment. 2. The second part of this article did an analysis about the function and need of the system, finished the structure of MVC model and did a detailed analysis of the designing of the database. 3. According to the analysis of the function and need of the system, the third part did a detailed designing of the enrollment and logging on of users, search for books, shopping car managing and order form managing, and listed the actual code. 4. According to actual running of the system, this task did a full-scale test to this system, and it validated the application meaning of the JSP technology in the online-shopping of books system. : online-shopping of books, JSP,Servlet,Oracle。 Key words 第 2 页 共 38页 目录 第一章 绪 论 .................................................................................. 5 1.1前言 ......................................................................................................................................... 5 1.2系统设计目的 .......................................................................................................................... 6 1.3 系统设计环境.......................................................................................................................... 6 第二章 开发技术及开发工具 ........................................................ 7 开发技术 ................................................................................................................................. 7 2.1 2.1.1 HTML技术 ....................................................................................................................... 7 2.1.2 JSP技术 ............................................................................................................................ 8 2.1.3 Servlet技术 ....................................................................................................................... 8 2.1.4 JavaBean技术 ................................................................................................................. 10 2.1.4 Hibernate技术................................................................................................................. 10 2.2 开发工具 ............................................................................................................................... 11 2.2.1 MyEclipse简介 ............................................................................................................... 11 2.2.2 Tomcat服务器 ................................................................................................................ 11 2.2.3 Oracle数据库 .................................................................................................................. 12 第三章 系统总体设计 .................................................................. 14 3.1 系统功能需求分析 ................................................................................................................ 14 .1.1 用户注册需求 ................................................................................................................ 14 3 3.1.2 用户登陆需求 ................................................................................................................ 14 3.1.3 购物车管理需求............................................................................................................. 14 3.1.4 订单管理需求 ................................................................................................................ 14 3.1.5管理员功能 ..................................................................................................................... 14 3.1.6 用例图 ............................................................................................................................ 14 3.2 MVC模式下的系统结构分析 ................................................................................................ 15 3.2.1 MVC模型及工作原理 .................................................................................................... 15 3.2.2 系统组成,如表3-1所示 .............................................................................................. 17 3.2.3 系统结构说明 ................................................................................................................ 17 3.3 系统数据库的设计 ................................................................................................................ 18 3.3.1 系统数据库表 ................................................................................................................ 18 3.3.2 数据库表的关系图 ......................................................................................................... 20 3.4 数据持久层设计 .................................................................................................................... 20 第四章 系统功能详细设计与实现............................................... 22 4.1 注册功能的实现 .................................................................................................................... 22 4.2 登陆功能的实现 .................................................................................................................... 23 4.3 购物车功能的实现 ................................................................................................................ 24 第 3 页 共 38页 订单功能的实现 .................................................................................................................... 27 4.4 第五章 系统测试及演示 .............................................................. 31 5.1 测试方法 ............................................................................................................................... 31 5.2 测试环境 ............................................................................................................................... 31 5.3 测试内容 ............................................................................................................................... 31 5.4 测试总结 ............................................................................................................................... 35 设计总结........................................................................................ 36 致谢 ............................................................................................... 37 参考文献........................................................................................ 38 第 4 页 共 38页 第一章 绪 论 1.1前言 电子商务始于20世界70年代,但当时主要是电子数据交换(EDI)贸易,应用不是很广泛而且交易量很小。随着Internet的不断普及,人们对网络应用的要求已经不再是浏览网站新闻、收发电子邮件,日益忙碌的人们开始追求利用互联网这一快捷而且强大的平台足不出户地进行网上购物。下面我们就以网上购书来比较网络销售较之传统市场营销所具有的特点: 第一(从间接经济到直接经济,交易成本降低 传统的市场营销模式必须有许多中间环节,图书出版商与消费者之间存在大量的批发商、零售商为中介,这就决定了其“间接经济”的特点。网络购书的出现从根本上减少了传统售书的中间环节,缩短了供与求之间的距离,同时也大大减少了各种不必要的消耗,使我们进入“直接经济”时代。网上书店的网上服务也可以提供全新的服务方式。网上购书使得买卖双方的交易成本大大降低,具体表现在: (1)购书者和售书者通过网络进行商务活动,无需中介者参与,减少了交易的有关环节,所以网上书店的书的价格比传统书店低。 (2)售书方可以通过互联网进行书籍的介绍,宣传,避免了在传统方式下做广告等大量费用。 (3)互联网使买卖双发即使沟通供需信息,使无库存销售成为可能,从而使库存成本降为零。 (4)传统的售书平台使地面地铺,新的网上书店的售书平台则使在网吧、家庭或者办公室。 第二(让购书者的购买区域从当地扩展到全球 由于传统售书模式的限制,购书者往往只能在当地书店选购书籍,很少有人会为了买一本书特地去别的省市,即便让人代购也烦人烦己,而且各个书店的进货渠道有所不同,使得书店销售的书目品种存在差异,这就会让购买者要多跑几家才可能买到想要的书。互联网能够把全世界的顾客送到地球上开设的任何一家网络书店,消费者只需要在电脑面前就跨市、跨省甚至跨国选购自己想要的书籍,这家网上书店如果需求,只需要鼠标一点即可进入另外一家网上书店,方便快捷,省钱省力。 第三(大小书店公平竞争,交易透明化 互联网为所有书店提供了平等的竞争环境。在传统售书行业中,出版商和销售商必须投入巨大资金和人力去建立其营销网络,对于一些中小书店来说,是一个非常庞大的障碍。然后现在,互联网使最小的书店也可以与最大的书店一样平 第 5 页 共 38页 等地出现在全世界的客户面前,像销售渠道之类的障碍在网络经济时代完全瓦解了。买卖双方整个交易过程都在网络上进行。通畅、快捷的信息传输可以保证各种信息之间相互核对,可以防止伪造信息的流通。 1.2系统设计目的 系统的主要设计目的就是利用现代化的电子及网络技术,为企业和客户搭建一个互动平台——网上购书系统。降低企业运营成本的同时,方便客户购书,达到双赢的目的。一方面,企业减少了地面店铺的租凭费用,减少了宣传货物的广告费用,减少了雇佣员工的费用;另一方面,电子及网络技术使得企业运作更加快捷方便,为企业赢得宝贵的时间和商机。对于客户来说,客户省去了逛书店的时间,同时可以将自己的需求迅速地反馈给企业,使自己的需求可以更好地得到满足。 1.3 系统设计环境 本系统是在Unix环境下开发。本文的设计思想是建立在MVC模式下的:用JSP做显示,用Servlet做控制,用JavaBean连接Oracle数据库,并用Hibernate实现数据持久化,实现管理员的相关权限和客户的注册、登陆、查找、购买、购物车管理、订单管理等功能,最终实现网上购书系统。 第 6 页 共 38页 第二章 开发技术及开发工具 本系统是在Unix 环境下开发的,用到的主要技术有:HTML、JSP、Servlet、 Eclipse、Tomcat、Oracle。 JavaBean、Hibernate技术,开发工具有:My 2.1 开发技术 2.1.1 HTML技术 与常见的字处理文件不同,Web页以超文本标识语言编排格式。HTML(Hyper Text Markup Language超文本标示语言)是一种用来制作超文本文档的简单标记语言,它是万维网技术的基础,对万维网技术的成功起到了举足轻重的作用。HTML文件是带有特定HTML插入标记的用以编排文档属性和格式的文本文件。它能独立于各种操作系统平台。自1990年以来HTML就一直被用作World Wide Web上的信息标示语言,用于描述Homepage的格式设计和它与WWW上其他Homepage的链结信息。 超文本(Hypertext)是把一些信息根据需要联结起来的信息管理技术。超文本由若干互连的文本块组成,这些信息块可以是若干屏、窗口、文件或更小的快信息,这样的信息单元称为节点(node)。不管节点有多大,每个节点都由若干指针指向其他节点或从其他节点指向该节点的指针,这些指针称为链接(link)。超文本的“超”体现在它不仅能包含文本,而且可以包含图像、音频、视频等多媒体信息。因此超文本也称为超媒体(Hypermedia)。超文本的书写格式由专门的规定,这就是超文本标记语言HTML。 通常HTML文件是它带有.html或.htm的文件扩展名。生成一个HTML文档主要由以下三种途径:(1)手工直接编写。(2)通过某些格式转换工具将现有的其它格式文档(如WORD文档,EXCEL文档)转换成HTML文档。(3)由Web服务器(或称HTTP服务器)方实时动态地生成。一般的HTML页面具有如下的结构: ,<base>,<link>,<meta> </head> <body> 这是HTML正文部分 </body> </html> 第 7 页 共 38页 可见在一个HTML网页文件中,一般必须有一对<html></html>标记作为文件的开头和结尾,在<html>标记后是头部标记<head></head>,其后是实体标记<body></body>。 2.1.2 JSP技术 Jsp(Java Server Page)是在普通Html中嵌入Java代码的一个脚本,在 )一样,但它与其它语言不同的是:其这一点上,它与其它的脚本语言(如Php 它脚本语言由服务器直接解释这个脚本,而Jsp则由Jsp容器(如Tomcat)首先将其转换为Servlet,然后再调用Javac将Servlet编译为Class文件。最终,服务器解释的是Class文件。 JSP技术在多个方面加速了动态Web页面的开发: (1)内容的生成和显示进行分离。使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容,并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。 (2)强调可重用的组件。绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBean或者Enterprise JavaBea)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技术和优化结果的开发努力中得到平衡。 (3)采用标识简化页面开发。Java Server Page技术封装了许多功能,这些功能是在易用的、于JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBean组件,设置或者检索组件属性,下载Applet,以及执行用其它方法更难于编码和耗时的功能。 (4)可移植性强。JSP是用Java开发的,可以一处编写,到处运行,因此JSP与平台完全无关,可以支持多平台。 (5)可伸缩性和可扩展性强。JSP通过JavaBean可实现功能的扩充,如文件上传、操作数据库或者将复杂的业务分离出来成为独立可重复利用的模块。 2.1.3 Servlet技术 第 8 页 共 38页 Servlet是运行在Web服务器或应用服务器上的Java程序,它是一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。Servlet的工作是执行下面的任务,如图2-1所示: 图2-1 (1)读取客户发送的显示数据。最终用户一般在网页的HTML表单中输入这些数据。然而,数据还有可能来自于applet或定制的HTTP客户程序。 (2)读取由浏览器发送的隐式请求数据。上图中显示了一条从客户端到Web服务器(Servlet和JSP所在的层)的单箭头,但实际上从客户端传送到Web服务器的数据由两种,它们分别为用户在表单中输入的显示数据,以及后台的HTTP信息。两种数据都很重要。HTTP信息包含cookie、浏览器所能识别的媒体类型和压缩模式等。 (3)生成结果。这个过程可能需要访问数据库、调用Web服务,或者直接计算得出对应的响应。实际的数据可能存储在关系型数据库中。该数据库可能不理解HTTP,或者不能返回HTML形式的结果,所以Web浏览器不能直接与数据库进行会话。即使它能够做到这一点,为了安全上的考虑,我们也不希望让它这样做。对于大多数其他应用程序,也存在类似的问题。因此,我们需要Web中间层从HTTP流中提取输入数据,与应用程序会话,并将结果嵌入到文档中。 (4)向客户发送显示数据(即文档)。这个文档可以用各种格式放送,包括文本(HTML或XML),二进制(GIF图),甚至可以是建立在其他底层格式之上的压缩格式,如zip。但是,到目前为止,HTML是最常用的格式,故而Servlet和JSP的重要任务之一就是将结果包装到HTML中。 (5)发送隐式的HTTP响应数据。上图中显示了一条从Web中间层(Servlet或JSP页面)到客户端的单箭头。但是实际发送的数据有两种:文档本身,以及后台的HTTP信息。同样,两种数据对开发来说都是至关重要的。HTTP响应数据的发送过程设计告知浏览器或者其他客户程序所返回文档的类型(例如HTML),设置cookie和缓存参数,以及其他类似的任务。 Servlet技术和传统CGI及许多类CGI技术相比,Java Servlet效率更高、更易用、更强大、更容易移植、更安全、也更廉价。 第 9 页 共 38页 2.1.4 JavaBean技术 JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念,是一个可以重复使用的软件模型。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快读的生成新的应用程序。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有重大的意义。 Bean在构造器的工具(容器)中操作,提供具体的操作性能。Bean是建立应用程序的建筑块,大多数常用的Bean通常是小型控制程序,但也可以生成封装整个应用程序的Bean,将其嵌入到复合文档中。一般来说,Bean可以表示为简单的GUI,也可以生成不可见的Beans用于接收事件和在后台工作。在JSP中所用的JavaBean一般以不可见的组件为主。JavaBean的价值在于它可以经由一组特性来使用,而这些特性则提供对JavaBean设定的存取。 2.1.4 Hibernate技术 从不同的角度Hibernate有着不同的解释: (1)它是连接Java应用程序和关系数据库的中间件。 (2)它对JDBC API进行了封装,负责Java对象的持久化。 (3)在分层的软件架构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑。 (4)它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射。 实际上,Hibernate是一个基于JAVA的开发源代码的持久化中间件,它对JDBC做了轻量级封装,不仅提供ORM映射服务,还提供数据查询和数据缓存功能,JAVA开发人员可以方便地通过Hibernate API来操作数据库。 现在,越来越多的Java开发人员把Hibernate作为企业应用和关系数据库之间的中间件,以节省和对象持久化有关的30%的JDBC编程工作量。2005年,Hibernate作为优秀的类库和组件,荣获第15届Jolt大奖。Hibernate之所以能够流行,归功于它的以下优势: (1)它是开发源代码的,允许开发人员在需要的时候研究源代码,改写源代码,定制客户化功能。 (2)具有详细的参考文档。 (3)对JDBC仅做了轻量级封装,必要的话,用户还可以绕过Hibernate,直接访问JDBC API。 (4)具有可扩展性。 第 10 页 共 38页 (5)使用方便,容易上手。 (6)Hibernate既适用于独立的Java程序,也适用于Java Web应用,而且还可以在J2EE架构中取代CMP(Container-managered Persistence,由容器管理持久化),完成对象持久化重任,Hibernate能集成到会话EJB和基于BMP的实体EJB中,BMP(Bean-managered Persistence)是指由实体EJB本身管理持久化。 (7)Hibernate可以和多种Web服务器、应用服务器良好集成、并且支持几乎所有流行的数据库服务器。 2.2 开发工具 2.2.1 MyEclipse简介 MyEclipse平台是一个开放的集成开发工具,拥有强大的开发功能。它是建立在插件机制(发现新插件、集成插件和运行插件)之上的。MyEclipse平台可以为开发者提供将各种工具无缝集成的功能,并为集成软件开发工具的开发、构造和运行提供基础模块,拥有一整套的公共服务集。 MyEclipse软件开发工具箱(简称SDK)是由MyEclipse项目的3个子项目组合而成。每个子项目是单一的可下载包。MyEclipse软件开发工具箱为开发者提供了功能强大的开发环境和各种工具。所有基于MyEclipse的工具都在其平台上创建。 多数人认为MyEclipse是Java IDE,不过,当下载MyEclipse之后,除了有Java IDE(就是JDT),还有PDE。然而MyEclipse是万用工具平台。JDT实际上是Eclipse的添加品,也就是外挂程序。MyEclipse本身实际上是指MyEclipse平台(Eclipse Platform),除了下载时能取得Java工具集以外,还提供各种工具的支持,所以平台本身只是相当小的软件。如果想开发Java程序,用的是Eclipse随附的JDT外挂程序。如果想开发其它语言的程序,就需要拿到其它外挂程序,诸如CDT (C Development Toolkit)就可以开发C/C++程序。 My Eclipse跨计算机语言,也跨人类的语言。相同的外挂机制可用来增加对不同语言的支持,这里使用一种特殊的外挂,叫做外挂程序片断(plug-in fragment)。IBM以捐出一个语言套件,支持中文(繁体与简体)、法文、德文、意大利文、日文、韩文、葡萄牙文(巴西)与西班牙文。 2.2.2 Tomcat服务器 第 11 页 共 38页 Tomcat是一个免费的开源的Servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp<div class="wordList jsWordList"><a class="word" target="_blank" href="https://ishare.iask.com/f/25487209.html">规范</a><div class="wordList-dialog"><a href="https://ishare.iask.com/f/25487209.html" target="_blank">编程规范下载</a><a href="https://ishare.iask.com/f/bvk0b7cKG5V.html" target="_blank">gsp规范下载</a><a href="https://ishare.iask.com/f/62945790.html" target="_blank">钢格栅规范下载</a><a href="https://ishare.iask.com/f/34558243.html" target="_blank">警徽规范下载</a><a href="https://ishare.iask.com/f/j9iYzzksE0.html" target="_blank">建设厅规范下载</a></div></div>总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年最具创新的java产品,可见其在业界的地位。 与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构在组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,整个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下。 Tomcat应用程序的部署很简单,只需将使用者的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。在浏览器中访问这个应用Jsp时,通常第一次会很慢,因为Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码储存在一个xml文件中。通过这个应用,辅助于Ftp,可以在远程通过Web部署和撤销应用。 Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。 因为Tomcat的免费并且具有开放性,功能强大。因此,选择了Tomcat作为独立运行Web服务器和JSP引擎。 2.2.3 Oracle数据库 后台数据库选用Oracle,Oracle是典型的关系数据库系统(DBMS),关系数据库模型主要由三部分组成: (1)数据结构 在关系数据库中,数据是对象的集合。或者简单地说,对于用户来说,数据库就是许多表的集合,并且仅包含表。 (2)关系操作 关系操作包括对数据对象的定义操作,以及在数据对象中提取数据的操作。比如从表中检索数据就是一种关系操作。 (3)完整性规则 完整性规则用于限制能够对数据和数据对象进行的关系操作,提供对数据和数据结构的保护。 Oracle使用如下数据结构来实现关系数据库系统: 第 12 页 共 38页 ?创建表以存储数据。 ?创建视图和同义词以提供数据访问方式。 ?创建索引以提高数据访问的速度。 ?定义主码、外部码和候选码以实现完整性规则。 ?创建触发器以满足用户定义的完整性规则。 ?使用角色和权限以提供安全保障。 ?创建储存过程、函数和包以满足应用环境需求。 Oracle服务器具有以下特性: ?客户/服务器环境 ?大型数据库和空间管理 ?多个并行数据库用户 ?连接性 ?高事务处理能力 ?控制可用性 ?开放的、基于工业标准 ?管理安全性 ?数据库完整性增强 ?兼容性 ?分布式系统 ?复制环境 Oracle是“甲骨文”公司出品的历史比较悠久的十分优秀的DBMS。当前,Oracle DBMS以及相应的开发工具几乎在全世界各个工业领域中都会用到。无论是大型企业中的数据仓库应用,还是中小型企业中的联机事务处理业务,都可以找到成功使用Oracle数据库系统的典范。对于计算机专业人士来说,Oracle数据库是世界领先、性能优异的数据库系统;对于金融人士来说,Oracle公司是世界排名前5的国际大型企业;对于渴望创建高性能的企业电子商务或者管理信息系统的企业家来说,Oracle是最低成本、最高性能的完整解决<div class="wordList jsWordList"><a class="word" target="_blank" href="https://office.iask.com/f/sJ1vMu0fZUB.html">方案</a><div class="wordList-dialog"><a href="https://office.iask.com/f/sJ1vMu0fZUB.html" target="_blank">气瓶 现场处置方案 .pdf</a><a href="https://office.iask.com/f/sJ1vMu0fZUB.html" target="_blank">气瓶 现场处置方案 .doc</a><a href="https://office.iask.com/f/2WXUWhTiiJ3.html" target="_blank">见习基地管理方案.doc</a><a href="https://office.iask.com/f/2gKr7v23OCV.html" target="_blank">关于群访事件的化解方案</a><a href="https://office.iask.com/f/282PhCXFWzX.html" target="_blank">建筑工地扬尘治理专项方案下载</a></div></div>。 本系统中采用的数据库版本为Oracle 10g,Oracle数据库10g是第一个为企业级网络计算而设计的数据库。Oracle数据库10g在Oracle 9i的基础上,提供了针对网格计算更多的特性,如更大的规模、可管理性、高可用性、业务职能等。 第 13 页 共 38页 第三章 系统总体设计 网上购书系统主要是实现网上选书、购书、产生订单等功能的系统。一个典型的网上商城一般都需要实现商品信息的动态展示、购物车管理、客户信息注册登录管理、订单处理等模块。 3.1 系统功能需求分析 3.1.1 用户注册需求 注册要求用户输入一些个人信息,当注册成功后,用户可以使用用户名和密码进入购书系统,登陆后才能进行购物等活动。为了能成功进入购书系统并能够实现图书商品的购买,需要对每一个进入系统的用户进行合法性的验证,通过对用户注册实现对用户登录、查询、购书等功能的唯一性的验证。 3.1.2 用户登陆需求 在登录界面上用户可以输入用户名和密码进行登录,如果用户名和密码都正确,进入网上购书系统,如果不正确,提示用户失败登录的原因,并重新登录。如果用户不存在还可以点击用户注册进入用户注册界面。 3.1.3 购物车管理需求 跟踪用户选择的图书,用户在购物车中保存浏览书店时所选中的图书。每个用户都有自己临时的一个购物车。可以查看购物车,可以向购物车中添加选中的图书,修改选中的图书的数量,删除已选择的图书或者清空购物车重新选购图书。 3.1.4 订单管理需求 当确认订单后,系统根据购物车中的数据生成一个订单和一个订单明细表,并将购书信息加入到相应顾客的订单信息中,并清空购物车中的所有书。 3.1.5管理员功能 管理员主要实现会员管理,后台管理以及订单的管理,在此系统中应属于配角 3.1.6 用例图 根据上述需求分析绘制用例图,如图3-1所示: 第 14 页 共 38页 图3-1 3.2 MVC模式下的系统结构分析 3.2.1 MVC模型及工作原理 MVC是Model-View-Controller的简称,即模型-视图-控制器。MVC是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用,最近几年被推荐为Sun公司J2EE平台的设计模式,受到越来越多的Web开发者的欢迎。MVC的工作原理如下图3-2所示: View(视图) Controller(控制) Model(模型) 图3-2,MVC工作原理图 (1)视图 视图是用户看到并与之交互的界面,视图向用户显示相关数据,并能接受用户的输入数据,但是它不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。 第 15 页 共 38页 (2)模型 模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。 (3)控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求。当web用户单击web页面中的提交按钮来发送HTML表单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。 (4)MVC处理过程 现在我们来总结MVC处理过程。首先控制器接受用户的请求,并决定应用调用哪个模型来进行处理。然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。 (5)MVC的优点 在最初的JSP网页中,像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分开离开来。但这通常不是很容易做到的,它需要精心的<div class="wordList jsWordList"><a class="word" target="_blank" href="https://ishare.iask.com/f/RjkE7AVTXT.html">计划</a><div class="wordList-dialog"><a href="https://ishare.iask.com/f/RjkE7AVTXT.html" target="_blank">项目进度计划表范例</a><a href="https://ishare.iask.com/f/j3UG0H9di7.html" target="_blank">计划下载</a><a href="https://ishare.iask.com/f/j3UG0H9di7.html" target="_blank">计划下载</a><a href="https://ishare.iask.com/f/j3UG0H9di7.html" target="_blank">计划下载</a><a href="https://ishare.iask.com/f/1QrT6RXWLP63.html" target="_blank">课程教学计划下载</a></div></div>和不断的尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是毋庸置疑的。 首先,多个视图能共享一个模型。如今,同一个web应用程序会提供多种用户界面,例如用户希望既能通过浏览器来收发邮件,还希望通过手机来访问电子 [3]界面。在MVC设计模式邮箱,这就要求web网站同时提供Internet界面和WAP 中,模型响应用户请求并返回响应数据,视图负责格式化数据并把他们呈现给客户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。 其次,模型是自包含的,与控制器和视图保持相对独立,所以可以方便地改变应用程序的数据层和业务规则。如果把数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源。只需改变模型即可。一旦正确实现了模型,不管数据来自数据库还是来自LDAP服务器,视图都能正确的显示它们。由于MVC三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的构件。 此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的视图将处理结果显示给用户。 第 16 页 共 38页 (6)MVC的适用范围 使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去理解它。将MVC运用到应用程序中,会带来额外的工作量,增加应用的复杂性,所以MVC不适合小型应用程序。 但对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用性和结构方面上一个新台阶。尽管在最初构建MVC框架会花费一定的工作量,但从长远的角度来看,它会大大提高后期软件开发的效率。 3.2.2 系统组成,如表3-1所示 表3-1 用户表示层 控制处理层 业务逻辑层 (View) (Controller) (Model) confirm.jsp AddOrderLineServlet Book index.jsp AddManagerServlet Customer listBookStore.jsp ClearCartServlet Orderform listCart.jsp ConfirmServlet Orderline listOrder.jsp DelOrderlineServlet Manager login.jsp DelOrderServlet order.jsp EditOrderlineServlet orderinfo.jsp ListOrderServlet register.jsp LoginServlet OrderinfoServlet RegisterServlet 3.2.3 系统结构说明 为体现MVC模式的设计思想,可采用表3-2所示结构: 表3-2,结构图 src ---com---estore---bean (pojo类和映射文件) | | | |--common--|----BeanFactory (工厂类) | | |--HibernateSessionFactory (工厂类) | | | |--dao (DAO模式实现的数据访问层) | | |---impl (接口实现类) 第 17 页 共 38页 | | |---ICusotmerDao | | |---IOrderDao | |--service (业务逻辑层) | | |---impl (接口实现类) | | |---CustomerService | | |---OrderService | |--web (表现层) | |---filter (过滤器) | |---listener (监听器) | |---servlet (Servlet) |---hibernate.cfg.xml |---log4j.properties 3.3 系统数据库的设计 3.3.1 系统数据库表 基于系统的功能分析制作表单: Manager 表3-3,manager表 字段名 字段类型 约束或索引 描述 ID Number(Sequence) PK 记录流水号 Name Varchar2(20) 管理员姓名 Password Varchar2(20) 管理员密码 Zip Varchar2(20) 邮编 Address Varchar2(20) 地址 Telephone Varchar2(20) 电话 Email Varchar2 (30) 电子邮件 此表用于存放管理员信息 Customer 表3-4,customer表 字段名 字段类型 约束或索引 描述 ID Number(Sequence) PK 记录流水号 Name Varchar2(20) 用户名 第 18 页 共 38页 Password Varchar2(20) 用户密码 Zip Varchar2(20) 邮编 Address Varchar2(20) 地址 Telephone Varchar2(20) 电话 Email Varchar2 (30) 电子邮件 此表用于存放用户信息 Book 表3-5,Book表 字段名 字段类型 约束或索引 描述 ID Number(Sequence) PK 记录流水号 Name Varchar2(100) 书名 Price Number(8,2) 价格 此表用于存放图书信息 Orderform 表3-6,Orederform表 字段名 字段类型 约束或索引 描述 ID Number(Sequence) PK 记录流水号 Cost Number(8,2) 订单总额 Orderdate Date 下单时间 Customerid Number FK 顾客的记录流水号 此表用于存放订单信息 Orderline 表3-7,Oderline表 字段名 字段类型 约束或索引 描述 ID Number(Sequence) PK 记录流水号 Num Number 数量 Orderid Number FK 订单的流水记录号 Bookid Number FK 图书的流水记录号 第 19 页 共 38页 此表用于存放订单明细信息 3.3.2 数据库表的关系图 根据表单绘制实体间的关系模型图,如图3-3所示: 图3-3 3.4 数据持久层设计 在数据持久层的设计过程中,系统采用面向对象程序设计方法和关系数据库模型设计方法。考虑到面向对象模型侧重于使用包含数据、行为的对象目标来构建应用程序,关系模型则主要针对数据的存储,模型机制的不同造成了两者之间的不匹配。因此,需要采用一种有效的映射方法来解决该矛盾。为此,系统采用Hibernate 第 20 页 共 38页 技术开发并封装实现了PPO映射框架(Plain Persistent Object Mapping Framework),该项技术提供了一个使用方便、灵活的轻型数据持久的框架,实现对象/关系映射(O/R Mapping),有力地支撑了数据层的访问。数据持久层设计基本体系如图3-4所示。 PPO 映射框架基于Hibernate技术,处于持久层和应用程序之间,通过使用数据库和配置数据为应用程序提供数据持续服务。PPO 映射框架的主要特点是,拥有透明的持久层,支持多种数据库的查询语言,具备较大的扩展性,可以提供生成主键的多种算法,支持对复合主键的映射,支持继承关系映射,能提供简单的API,可以和J2EE进行良好的整合。 PPO映射框架实现了动态代理的轻量级对象/关系映射,提供了数据查询和恢复机制。PPO映射框架之所以称为轻 量级映射框架是因为Java命名目录服 务JNDI和事务服务JTA由应用程序来 提供,不需要映射框架来关心这些细 节,这样简化了PPO映射框架的API, 使得对象/关系的映射更加灵活。如图 2-5所示。 图3-5 PPO映射框架解决了Java对象和关系数据库之间的映射所需要解决的问题:一是将对象属性的数据类型(Attribute Data Type)映射成关系数据库中列的类型(Column Type);二是将对象属性(Attribute)映射成关系数据库中的列(Column);三是将对象的类(Class) 映射成关系数据库中的表(Table);四是在关系数据库中实现对象间关系的映射,关系包括继承(Inheritance),关联(association),聚集(aggregation),组合(composition)及一对一,一对多,多对多关系等。 在映射方法的实现上,PPO映射框架通过使用Java Reflect包和Hibernate包的API,并遵循指定的映射机制,实现对象与关系映射,将Java的实体类对象映射为数据库表数据,完成对数据库中数据的查询、排序、添加、修改、删除 。 等操作,实现对数据库的访问 第 21 页 共 38页 第四章 系统功能详细设计与实现 在以下内容中,将逐步实现需求分析中的各个功能,并加以解释和说明,列出关键性代码段。 4.1 注册功能的实现 为了统计用户信息,方便管理以及更好地为用户服务,网上购书系统规定只有注册用户登陆以后才能购书,在register.jsp页面注册一个新用户,用户名作为以后登陆唯一标识。如果注册成功,就跳转到login.jsp页面。 具体步骤: (1)实现ICustomerDao接口中的saveOrUpdateCustomer()方法。 (2)实现ICustomerService接口中的业务逻辑register()方法。 (3)创建RegisterServlet.java,在该Servlet中调用ICustomerService接 口中的register()方法进行注册。 关键代码: 判断注册的用户名是否已经在数据库中存在 publicvoidregister(Customer customer) throws CustomerServiceException { HibernateTransaction tran=new HibernateTransaction(); tran.beginTransaction(); try{ ICustomerDao customerDao=(ICustomerDao)BeanFactory.getBean(BeanFactory.CUSTOMERDAO); Customer cust=customerDao.findCustomerByName(customer.getName()); if(cust!=null) throw new CustomerServiceException("帐户已经存在!"); customerDao.saveOrupdateCustomer(customer); tran.commit(); }catch(Exception e){ e.printStackTrace(); tran.rollback(); if(e instanceof CustomerServiceException){ throw (CustomerServiceException)e; } } } 将注册信息保存到Customer表 public void saveOrupdateCustomer(Customer customer) throws Exception { Session session = HibernateSessionFactory.getSession(); session.saveOrUpdate(customer); 第 22 页 共 38页 } 4.2 登陆功能的实现 网站提供用户登陆界面,用户必须使用已经注册过的正确的用户名和密码进行登 陆。 在login.jsp页面上用户可以输入用户名和密码进行登陆,如果用户名和密码都 正确,则登陆成功跳转到listBookStore.jsp。如果不正确,需要提示用户并且 还是跳转到login.jsp页面继续登陆。 具体步骤: (1)实现ICustomerDao接口中的findCustomerById()方法。 (2)实现ICustomerService接口中的业务逻辑login()方法。 (3) 创建LoginServlet.java,在该Servlet中调用ICustomerService接口 中的login()方法进行登陆。 (4)从application中取出所有的Book在listBookStore.jsp中显示。 关键代码: 验证用户名和密码是否正确 public Customer findCustomerById(Long customerId) throws Exception{ Session session=HibernateSessionFactory.getSession(); Query query=session.createQuery("from Customer where id="+customerId); List<Customer> list=query.list(); return list.get(0); } public Customer login(String name, String password) throws CustomerServiceException { HibernateTransaction tran=new HibernateTransaction(); tran.beginTransaction(); try{ ICustomerDao customerDao=(ICustomerDao)BeanFactory.getBean(BeanFactory.CUSTOMERDAO); Customer cust=customerDao.findCustomerByName(name); if(cust==null){ throw new CustomerServiceException(" 用户不存在~"); } else if(!cust.getPassword().equals(password)){ throw new CustomerServiceException(" 密码不正确~"); } else { tran.commit(); return cust; 第 23 页 共 38页 } }catch(Exception e){ e.printStackTrace(); tran.rollback(); if(e instanceof CustomerServiceException){ throw (CustomerServiceException)e; }else{ return null; } } } 4.3 购物车功能的实现 购物车功能包括在购物车中添加图书、修改图书数量、删除已选图书、清空购物车。 1、增加Orderline:在listBookStore.jsp中填入图书数量并点击购买按钮后往购物车(ShoppingCart.java)中增加一个Orderline。 具体步骤: (1)创建AddOrderlineServlet.java。 (2)在该Servlet中根据listBookStore.jsp页面传入的bookid和num来构造 一个Orderline对象,然后从Session中获得购物车(ShoppingCart)的 对象,并调用其中的addLine(Orderline orderline)方法往购物车中增加 一个Orderline对象。 (3)增加Orderline成功后跳转到listBookStore.jsp页面。 关键代码: 向购物车中添加Orderline信息 protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doPost(req,res); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Long num =new Long(req.getParameter("num")); Long bookid=new Long(req.getParameter("bookid")); HttpSession session=req.getSession(); ShoppingCart cart=(ShoppingCart)session.getAttribute("cart"); System.out.println(cart); Orderline orderline=new Orderline(); 第 24 页 共 38页 Map<Long,Book> books=(Map<Long,Book>)super.getServletContext().getAttribute("books"); Book book=books.get(bookid); //将书和数量包装成一个Orderline System.out.println(books); orderline.setBook(book); orderline.setNum(num); //加入购物车 cart.addLine(orderline); session.setAttribute("cart", cart); res.sendRedirect(req.getContextPath()+"/listBookStore.jsp"); } } 2、查看购物车:在listBookStore.jsp页面上点击查看购物车的按钮可以差看 购物车中所有Orderline信息。 具体步骤: (1)点击查看购物车按钮后链接到listCart.jsp。 (2)在listCart.jsp页面中,从Session中取出ShoppingCart对象并且在该 页面上输出所有其中的Orderline信息。 关键代码: 在listCart.jsp页面取得购物车中所有Orderline信息 form name="f1" method="post" action="delOrderline"> <input type="hidden" name="lineid" value="${line.book.id }"/> <input type="hidden" name="num" value="${line.num }"/> <tr> <td align="center">${line.book.id }</td> <td>${line.book.name }</td> <td>${line.book.price*line.num }</td> <td><input type="text" name="num1" value="${line.num }" size="4" maxlength="4" onblur="num.value = this.value;"></td> <td align="center"> 3、删除Orderline:在listCart.jsp页面中点击清除按钮就可以从购物车中删 除一个制定的Orderline。 具体步骤: (1)创建DelOrderlineServlet.java。 (2)在Servlet中获得listCart.jsp页面中传递过来的lineid(bookid)。 (3)从Session中获得ShoppingCart对象,并且调用它的dropLine(Long lineid) 方法来删除一个指定的Orderline对象。 (4)删除成功后跳转到listCart.jsp页面。 第 25 页 共 38页 关键代码: 删除指定的Orderline信息 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Long orderid=new Long(req.getParameter("orderid")); OrderServiceImpl service=(OrderServiceImpl)BeanFactory.getBean(BeanFactory.ORDERSERVICE); try{ service.delOrder(orderid); req.getRequestDispatcher ("/listOrder.jsp").forward(req, res); }catch(OrderServiceException e){ e.printStackTrace(); req.setAttribute("error", e.getMessage()); req.getRequestDispatcher("listOrder.jsp").forward(req, res); } } 4、修改Orderline:在listCart.jsp页面上修改图书数量并点击修改按钮后可 以修改指定的一个Orderline的信息。 具体步骤: (1)创建EditOrderlineServlet.java。 (2)在该Servlet中先从Session中获得ShoppingCart对象,然后获得从 listCart.jsp传递过来的lineid(bookid)和num,最后根据lineid来获得指定 的Orderline对象,并且修改数量为num。 (3)修改成功后跳转到listCart.jsp页面。 关键代码: 修改指定的Orderline信息 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Long lineid=new Long(req.getParameter("lineid")); System.out.println(lineid); Long num=new Long(req.getParameter("num")); ShoppingCart cart=(ShoppingCart)req.getSession().getAttribute("cart"); System.out.println(cart.isEmpty()); Orderline line=cart.getOrderline(lineid); line.setNum(num); res.sendRedirect(req.getContextPath()+"/listCart.jsp"); } 第 26 页 共 38页 5、清空购物车:在listCart.jsp页面中点击清空购物车按钮后可以删除购物车中所有的Orderline。 具体步骤: (1)创建ClearCartServlet.java。 (2)在该Servlet中获得ShoppingCart对象,然后调用其中的removeAll()方 法来清空购物车。 (3)清空购物车成功后跳转到listBookStore.jsp页面。 关键代码: 清空购物车 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { ShoppingCart cart=(ShoppingCart)req.getSession().getAttribute("cart"); cart.removeAll(); res.sendRedirect(req.getContextPath()+"/listBookStore.jsp"); } 4.4 订单功能的实现 订单管理页面实现了显示订单信息、执行订单的功能。在图书列表和购物车中都有订单管理按钮。 1、查看用户所有订单:在listBookStore.jsp页面上点击查看用户订单按钮后可以查看当前登陆用户所有的订单信息。 具体步骤: (1)实现IOrderDao接口中的findAllOrder()方法。 (2)实现IOderService接口中的业务方法listAllOrder()。 (3)创建ListOrderServlet.java,在该Servlet中调用IOrderService接口 中的listAllOrder()方法来查找用户的所有订单信息。 (4)查找订单成功后跳转到listOrder.jsp页面,并将订单信息在该页面上显 示。查找不成功跳转到listCart.jsp页面。 关键代码: 查看用户所有订单信息 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { HttpSession session=req.getSession(); Customer customer=(Customer)session.getAttribute("cust"); Long customerid=customer.getId(); OrderServiceImpl service=(OrderServiceImpl)BeanFactory.getBean(BeanFactory.ORDERSERVICE); try{ 第 27 页 共 38页 Map<Long,Orderform> orderforms=service.listAllOrder(customerid); req.setAttribute("orderforms", orderforms); req.getRequestDispatcher("listOrder.jsp").forward(req, res); }catch(OrderServiceException e){ e.printStackTrace(); req.setAttribute("error", e.getMessage()); req.getRequestDispatcher("listCart.jsp").forward(req, res); } } 2、提交订单:在listBookStore.jsp或者listCart.jsp页面上点击提交订单的 按钮后链接到Order.jsp页面,然后在该页面上点击确认订单按钮后才正式提交 订单,将订单信息分别保存到orderform和orderline表中。 具体步骤: (1)先链接到Order.jsp页面,在该页面上从Session中分别取出Customer和 ShoppingCart对象并将它们的信息显示在页面,在该页面还可以修改用户信息。 (2)实现IOrderDao接口中的saveOrder()方法。 (3)实现IOderService接口中的业务方法saveOrder()。 (4)实现ICustomerService接口中的业务方法update()。 (5)创建ConfirmServlet.java。 (6)在该Servlet中从Session中获取Customer对象并更新属性信息,从 Session中获得ShoppingCart对象并将它包装成一个Orderform(订单)对 象(注意要建立起Orderform对象和所有Orderline对象之间的双向关联 关系),最后调用ICustomerService接口中的update()方法和 IOrderService接口中的saveOrder()方法分别进行用户信息的更新和订 单保存。 (7)提交订单成功后跳转到confirm.jsp,失败跳转到order.jsp,在 confirm.jsp页面上点击继续购买按钮可以跳转到listBookStore.jsp。 关键代码: 提交订单,将订单信息分别保存到orderform和orderline表中 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { HttpSession session=req.getSession(); ShoppingCart cart=(ShoppingCart)session.getAttribute("cart"); Customer cust=(Customer)session.getAttribute("cust"); Orderform orderform=new Orderform(); orderform.setCost(cart.getCost()); 第 28 页 共 38页 orderform.setCustomer(cust); orderform.setOrderdate(new Date()); Set set=new HashSet(); set.addAll(cart.getOrderlines()); orderform.setOrderlines(set); for(Orderline line:cart.getOrderlines()){ line.setOrderform(orderform); } OrderServiceImpl service1=(OrderServiceImpl)BeanFactory.getBean(BeanFactory.ORDERSERVICE); try{ service1.saveOrder(orderform); res.sendRedirect(req.getContextPath()+"/confirm.jsp"); }catch(OrderServiceException e){ e.printStackTrace(); req.setAttribute("error", e.getMessage()); req.getRequestDispatcher("order.jsp").forward(req, res); } } 3、查询订单细明:在listOrder.jsp页面上点击明细按钮可以查看一个订单的明细信息。 具体步骤: (1)实现IOrderDao接口中的findOrderById()方法。 (2)实现IOrderService接口中的业务方法findOrderById()。 (3)创建OrderinfoServlet.java。 (4) 在该Servlet中获得从listOrder.jsp传递过来的orderid,然后根据该 orderid,调用IOrderService接口中的findOrderById()方法查询指定的 订单,并从该订单中获得所有的Orderline对象的集合放在request范围 内。 (5)查询成功后跳转到orderinfo.jsp页面,从request中取出放置在Orderline 对象的集合,并将信息显示在该页面上。 关键代码: 查询订单细明 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Long orderid=new Long(req.getParameter("orderid")); OrderServiceImpl service=(OrderServiceImpl)BeanFactory.getBean(BeanFactory.ORDERSERVICE); 第 29 页 共 38页 try{ Orderform orderform=service.findOrderById(orderid); req.setAttribute("orderform", orderform); req.getRequestDispatcher("orderinfo.jsp").forward(req, res); }catch(OrderServiceException e){ e.printStackTrace(); req.setAttribute("error", e.getMessage()); req.getRequestDispatcher("listorder.jsp").forward(req, res); } } 4、删除订单:在listOrder.jsp页面上点击删除按钮可以删除指定的一个用户 订单。 具体步骤: (1)实现IOderDao接口中的deleteOrder()方法。 (2)实现IOderService接口中的业务方法delOrder()。 (3)创建DelOrderServlet.java。 (4) 在该Servlet中获得从listOrder.jsp传递过来的orderid,然后根据该 orderid,调用IOderService接口中的delOrder()方法删除指定的订单。 (5)订单删除成功后跳转到listOrder.jsp页面。 关键代码 删除指定订单 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Long orderid=new Long(req.getParameter("orderid")); OrderServiceImpl service=(OrderServiceImpl)BeanFactory.getBean(BeanFactory.ORDERSERVICE); try{ service.delOrder(orderid); req.getRequestDispatcher ("/listOrder.jsp").forward(req, res); }catch(OrderServiceException e){ e.printStackTrace(); req.setAttribute("error", e.getMessage()); req.getRequestDispatcher("listOrder.jsp").forward(req, res); } } 第 30 页 共 38页 第五章 系统测试及演示 软件测试是软件开发过程中的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的要求,软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审、是软件质量保证的关键,软件测试是为了发现错误而执行程序的过程。 5.1 测试方法 本系统测试是利用单元测试的方法,来测试每个模块。在单元测试过程中采用黑盒测试,即只测试软件的功能。 5.2 测试环境 CPU:Intel(R) Core(TM)2 T7200 @2.00GHz 内存:512MB 操作系统:Unix 5.3 测试内容 1、用户注册模块测试,界面如图5-1所示: 图5-1 经过反复测试,系统均能正常完成此模块所包含的功能。 第 31 页 共 38页 2、用户登陆模块测试,界面如图5-2所示: 图5-2 经过反复测试,系统均能正常完成此模块所包含的功能。 2、选书购书模块测试,界面如图5-3所示: 图5-3 经过反复测试,系统均能正常完成此模块所包含的功能。 3、购物车模块测试,界面如图5-4所示: 第 32 页 共 38页 图5-4 经过反复测试,系统均能正常完成此模块所包含的功能。 4、订单模块测试,界面如图5-5.5-6,5-7,5-8所示: 图5-5 第 33 页 共 38页 图5-6 图5-7 图5-8 第 34 页 共 38页 经过反复测试,系统均能正常完成此模块所包含的功能。 5.4 测试总结 整个购书系统是为售书者和购书者服务的。商家可以把自己所销售的书放到图书列表中,通过网站展现在客户面前,供客户选购。顾客添写姓名、密码、邮编、地址、电话、电子信箱完成注册,登陆成功后即可开始选书购书,选择好自己想买的书后,在购物车中可以查看到自己刚刚所选书的书名、数量、单价、总金额,如果客户需求发生变化,或者受购买能力的限制,可以修改所选书的数量,或者删除不再想购买的书,客户确认想要购买的书及数量后,提交订单,订单中显示客户的详细资料和所购买书的清单,此处依然可以返回上一级进行清单修改或者继续购买,待选择结束和确认购买后,客户确认订单,订单被保存到数据库,客户可以查看到订单明细,多次购买以后,客户还可以查看到自己确认的所有订单以及订单的明细,并且能删除订单。 经过测试,本系统功能能正常使用,测试过程中未出现异常。系统整个功能能够满足用户的需求。 第 35 页 共 38页 设计总结 随着电子计算机技术的飞速发展,以及互联网应用开发技术的日趋成熟,越来越多的企业都开始投身到商务网站的建设和应用中。本论文的研究重点在于:在MVC模式的基础上,运用JAVA、JSP、Servlet等技术开发一个网上购书系统。 在本课题的研究过程中,我主要完成以下几个方面的工作: 1、阅读了大量相关的专业文献,对电子商务的技术原理有了比较详细和深入的 认识,对网上购书系统进行了可行性分析和功能需求分析。 2、实践了配置开发环境并搭建应用服务器,在比较了多种开发模式的优缺点后, 最终选定了MVC模式。 3、将JAVA、JSP、Servlet、Hibernate、HTML等技术结合起来运用到系统的开 发中。 4、设计数据库,数据库设计的质量直接影响到后期的工作量。 5、开发并测试了整套系统的各项功能,并对出现的bug进行了修改。 在开发的过程中,还存在以下不足: 1、系统在页面的美观方面还存在欠缺。 2、由于本人技术水平有限,一些功能未能实现。 本次毕业设计历时三个多月,通过多次细致的测试,证明系统具有一定的可扩展性,整套毕业设计是对我大学四年学习成果的鉴定,是理论知识和实践运用的完美结合。在本次毕业设计中一定还存在着许多不足之处,希望老师能及时指出缺陷所在,我会在今后的学习和工作中进行纠正和改善。 第 36 页 共 38页 致谢 本次毕业设计是在薛冰老师的悉心指导下完成的。薛冰老师严谨的治学作风、循循善诱的教导理念、为人师表的教学风度都给我留下了深刻的影响,这些都是我终生的宝贵财富。薛冰老师在论文的组织结构、理论分析和方向的把握上都为我提出了中肯的<div class="wordList jsWordList"><a class="word" target="_blank" href="https://ishare.iask.com/f/21833220.html">意见</a><div class="wordList-dialog"><a href="https://ishare.iask.com/f/21833220.html" target="_blank">文理分科指导</a><a href="https://ishare.iask.com/f/34IEwd873Vk.html" target="_blank">河道管理范围</a><a href="https://ishare.iask.com/f/3T2lmMYiCz.html" target="_blank">浙江建筑工程概算定额</a><a href="https://ishare.iask.com/f/4bA8ZWcgOh.html" target="_blank">教材专家评审意见</a><a href="https://ishare.iask.com/f/5jONFXVFY9l.html" target="_blank">党员教师互相批评意见</a></div></div>和修改建议,使我得以最终完成本论文。在此,谨向薛冰老师表示衷心的感谢和深深的敬意~ 感谢河南城建学院给我这个学习深造的机会,感谢计算机科学与技术系所有老师对我的栽培,让我在大学里学有所成,使我在今后的工作和生活中更加自信。 感谢我的家人在物质生活和精神生活上给我的大力支持,让我能安心完成学业。 感谢在论文撰写过程中帮助过我的同学和朋友们。 感谢各位审阅我的论文的老师们。 第 37 页 共 38页 参考文献 [1] (美)Ivor Horton著(Java 2 入门经典 JDK5[M](潘晓雷 于浚泊,王丹 (北京:机械工业出版社,2005(1-1058 等译 [2] 刘甲耀,严桂兰(Core Java应用程序设计教程[M](北京:电子工业出版社,2005.2(97-304 [3] 孙卫琴(精通Struts:基于MVC的Java Web设计与开发[M](北京:电子工业 (7-35 出版社,2004.8 [4] 菜剑,景楠( Java Web应用开发:J2EE和Tomcat[M](第2版(北京:清华大学出版社,2005.1(35-250 [5] 孙卫琴,李洪成(Tomcat与Java.Web开发技术详解[M](北京:电子工业出版社,2004.4(29-134 [6] 殷兆麟,张永平,姜淑娟(Java网络高级编程[M](北京:清华大学出版社,北京交通大学出版社,2005.5(94-235 [7] (美)Marco Pistoia,Nataraj Nagaratnam等著.企业级Java安全性:构建安全的J2EE应用[M](尹亚,明喻卫,严进宝译(北京:清华大学出版社,2005.3(72-109 [8] (美)William Crawford, Jonathan Kaplan. J2EE Design Patterns[M](O’Reilly,2003.9(25-102 [9] (美)Rod Johnson ,Juergen Hoeller(Expert One-on-One? J2EE? Development without EJB?[M]( Wiley Publishing, Inc. ,2004(31-63 [10] (美)Jason Hunter,William Crawford(J Java? Servlet Programming[M](O’Reilly,1998(86-143 [11] (美)Jayson Falkner, Kevin Jones( Servlets and JavaServer Pages?[M](The J2EE? Technology Web Tier. Addison Wesley,2003.9(12-32 第 38 页 共 38页 </div> </div> </div> </div> <div class="data-d-info js-mask" id="littleApp"></div> <div class="code-source"> <div class="swiper-wrapper" id="swiper-wrapper-id"></div> <div> <span id="active-num"></span> / <span id="all-num"></span> </div> </div> </div> <div class="text"> 本文档为【网上购书系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。 </div> <div class="text"> [版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。 </div> </div> </div> <!-- 相关资料 --> <div class="relevantInformation"> <div class="title">相关资料</div> <ul> <li> <a href="https://ishare.iask.com/f/43Wj4HFx4v.html"> 静脉采血 </a> </li> <li> <a href="https://ishare.iask.com/f/4LpWgA3m8R.html"> 24工业的区位选择(题型专练) 高考地理(全国通用)热点题型和提分作业含解析 </a> </li> <li> <a href="https://ishare.iask.com/f/brLpvBS70fb.html"> 2018撒哈拉的故事读书笔记4篇 </a> </li> <li> <a href="https://ishare.iask.com/f/iHsRdzkWny.html"> 【名词解释】液晶面板生产线(production_line) </a> </li> <li> <a href="https://ishare.iask.com/f/iQJp9J30wP.html"> 三男子诱骗轮奸卖淫女 诡辩称已付嫖资不算强奸 </a> </li> <li> <a href="https://ishare.iask.com/f/iVBsYO3eX3.html"> 值得回忆的往事 </a> </li> <li> <a href="https://ishare.iask.com/f/zZV4uoJ36f.html"> 水电安装工程施工方案 </a> </li> <li> <a href="https://ishare.iask.com/f/7431991.html"> 戳脚翻子拳门奇兵拦面叟(大烟袋) </a> </li> <li> <a href="https://ishare.iask.com/f/7FtBeyyWSOS.html"> 4A高层解读本土客 </a> </li> <li> <a href="https://ishare.iask.com/f/ASNgamlwxz.html"> BIM模型标准汇总 </a> </li> <li> <a href="https://ishare.iask.com/f/FynUzP6wR.html"> 部编人教版小学英语四年级上册期末复习知识点汇总 </a> </li> <li> <a href="https://ishare.iask.com/f/Log7bLZ3vX.html"> 怎么查询香港验血诊所和香港化验所是否正规注册的? </a> </li> <li> <a href="https://ishare.iask.com/f/ix0UogZ6iM.html"> 新编大学英语第五册课文与翻译 </a> </li> <li> <a href="https://ishare.iask.com/f/tFzaw1zdUqo.html"> 社会保障学期末考试试题库及答案 </a> </li> <li> <a href="https://ishare.iask.com/f/wIha7YD3Nc.html"> 2023年大象版科学六年级下册科学复习资料- </a> </li> <li> <a href="https://ishare.iask.com/f/320gZnXbCAm.html"> 老师个人大班教育教案 </a> </li> <li> <a href="https://m.ishare.iask.com/node/s/dmmv859rxrtwy.html"> 监理公司章程 </a> </li> <li> <a href="https://m.ishare.iask.com/f/1WCNvfS5AZV.html"> 整理文档二 九曜星 飞九宫 </a> </li> <li> <a href="https://ishare.iask.com/f/1QFXbGU4vUVP.html"> 音诗画 我们工行人 </a> </li> <li> <a href="https://m.ishare.iask.com/node/s/dj0n5lm0o7ro2.html"> 电缆沟工程施工合同书 </a> </li> </ul> </div> <!-- 热门搜索 --> <div class="hotSearch"> <div class="title">热门搜索</div> <ul> <li> <a href="https://m.ishare.iask.com/f/6udh9sv3KGn.html"> 百千万志愿者结核病防治知识传播活动工作方案(2014-2015年) </a> </li> <li> <a href="https://m.ishare.iask.com/f/6vDoo1Q0sea.html"> 2022年各项保险缴款纳税调整明细表 </a> </li> <li> <a href="https://m.ishare.iask.com/f/6wmoMHaqcFS.html"> 陕西省宝鸡市高三第一次质量检测物理试题 </a> </li> <li> <a href="https://m.ishare.iask.com/f/7EpzrIvtEBT.html"> 河北省石家庄市高考物理一模试卷 </a> </li> <li> <a href="https://m.ishare.iask.com/f/7UcF7JGR2z.html"> (完整word版)教科版四年级下科学实验目录 </a> </li> <li> <a href="https://m.ishare.iask.com/f/AfFN85lahs.html"> 商铺租金催缴通知书 </a> </li> <li> <a href="https://m.ishare.iask.com/f/E93U8dMOa1.html"> 麦肯锡电动汽车指数:欧洲为全球电动汽车下跌提供缓冲(英文原版行业报告) </a> </li> <li> <a href="https://m.ishare.iask.com/f/25uObyeD5LF.html"> 核心素养的小学体育教学设计 </a> </li> <li> <a href="https://m.ishare.iask.com/f/34LCP0mAloH.html"> 六年级下册生命安全教育教案 </a> </li> <li> <a href="https://m.ishare.iask.com/f/354ST4kHaV0.html"> 我要抱着你-简谱 </a> </li> <li> <a href="https://m.ishare.iask.com/f/35k5VS7Kpzi.html"> 浙江万里学院学报 </a> </li> <li> <a href="https://m.ishare.iask.com/f/5go15ELFNCT.html"> 年教师参加培训情况统计表 </a> </li> <li> <a href="https://m.ishare.iask.com/f/34S7KQ0ESE1.html"> 外语学习-商务英语写作范文汇总(WORD格式) </a> </li> <li> <a href="https://m.ishare.iask.com/f/35225238.html"> monetary policy, inflation, and the business cycle </a> </li> <li> <a href="https://m.ishare.iask.com/f/6udh9sv3KGn.html"> 百千万志愿者结核病防治知识传播活动工作方案(2014-2015年) </a> </li> <li> <a href="https://m.ishare.iask.com/f/6vDoo1Q0sea.html"> 2022年各项保险缴款纳税调整明细表 </a> </li> <li> <a href="https://m.ishare.iask.com/f/6wmoMHaqcFS.html"> 陕西省宝鸡市高三第一次质量检测物理试题 </a> </li> <li> <a href="https://m.ishare.iask.com/f/7EpzrIvtEBT.html"> 河北省石家庄市高考物理一模试卷 </a> </li> <li> <a href="https://m.ishare.iask.com/f/7UcF7JGR2z.html"> (完整word版)教科版四年级下科学实验目录 </a> </li> <li> <a href="https://m.ishare.iask.com/f/AfFN85lahs.html"> 商铺租金催缴通知书 </a> </li> <li> <a href="https://m.ishare.iask.com/f/E93U8dMOa1.html"> 麦肯锡电动汽车指数:欧洲为全球电动汽车下跌提供缓冲(英文原版行业报告) </a> </li> <li> <a href="https://m.ishare.iask.com/f/25uObyeD5LF.html"> 核心素养的小学体育教学设计 </a> </li> <li> <a href="https://m.ishare.iask.com/f/34LCP0mAloH.html"> 六年级下册生命安全教育教案 </a> </li> <li> <a href="https://m.ishare.iask.com/f/354ST4kHaV0.html"> 我要抱着你-简谱 </a> </li> <li> <a href="https://m.ishare.iask.com/f/35k5VS7Kpzi.html"> 浙江万里学院学报 </a> </li> <li> <a href="https://m.ishare.iask.com/f/5go15ELFNCT.html"> 年教师参加培训情况统计表 </a> </li> <li> <a href="https://m.ishare.iask.com/f/34S7KQ0ESE1.html"> 外语学习-商务英语写作范文汇总(WORD格式) </a> </li> <li> <a href="https://m.ishare.iask.com/f/35225238.html"> monetary policy, inflation, and the business cycle </a> </li> </ul> </div> <!-- 你可能还喜欢 --> <div class="youLike"> <div class="title">你可能还喜欢</div> <ul> <li> <a href="https://ishare.iask.com/f/e7Uc6KNlvN.html"> 韩国十大美女模特排行 </a> </li> <li> <a href="https://ishare.iask.com/f/iS3S7TZotG.html"> 工程背景 </a> </li> <li> <a href="https://ishare.iask.com/f/j918LKzoy0.html"> 2016新编回转构件动平衡实验报告 </a> </li> <li> <a href="https://ishare.iask.com/f/uZZwlfOOmy.html"> 投标的前期准备工作 </a> </li> <li> <a href="https://ishare.iask.com/f/30HXstNBv6h.html"> 红色警戒2:尤里的复仇尤里、盟军及苏联采矿效率对比一览 </a> </li> <li> <a href="https://ishare.iask.com/f/32rLThQzO3Q.html"> GB_T 18149-2017_离心泵、混流泵和轴流泵 水力性能试验规范 精密级 </a> </li> <li> <a href="https://ishare.iask.com/f/35kbj5t1psc.html"> 王敏大夫 5维全息疗法中级教案(平衡针疗法的取穴原则) .doc </a> </li> <li> <a href="https://ishare.iask.com/f/eeD1ncTfEg.html"> 基于安卓androidstudio的考试APP开发设计前台和后台管理系统 </a> </li> <li> <a href="https://ishare.iask.com/f/it3uVkyqvb.html"> 会计学专业成人高等教育课程 学习指导书:管理会计 </a> </li> <li> <a href="https://ishare.iask.com/f/1ezEDjGQE4B4.html"> 混凝土试块及同条件养护试块留置计划 </a> </li> <li> <a href="https://ishare.iask.com/f/1fn9SyLY1eyX.html"> 江西省发展改革委关于进一步完善机动车停放服务收费政策的通知--(赣发改收费〔2016〕960号) </a> </li> <li> <a href="https://ishare.iask.com/f/34ymbW9o5xS.html"> 新疆共青团组织热爱伟大祖国 </a> </li> <li> <a href="https://ishare.iask.com/f/5SZ9ogsYWDt.html"> 少儿口才教学教案 </a> </li> <li> <a href="https://ishare.iask.com/f/5hWI19ThpUL.html"> 信息部制度和工作流程 </a> </li> <li> <a href="https://ishare.iask.com/f/5l5sOktBLhn.html"> 江苏公务员行测资料分析试题 </a> </li> <li> <a href="https://ishare.iask.com/f/ezMnXIkTIs.html"> 办公设备维护方案 </a> </li> <li> <a href="https://m.ishare.iask.com/node/s/46cctweuaqh0.html"> 有毒有害气体检测记录 </a> </li> <li> <a href="https://m.ishare.iask.com/node/s/46cctweuaqh0.html"> 有毒有害气体检测记录 </a> </li> <li> <a href="https://m.ishare.iask.com/node/s/46cctweuaqh0.html"> 有毒有害气体检测记录 </a> </li> <li> <a href="https://m.ishare.iask.com/node/s/46cctweuaqh0.html"> 有毒有害气体检测记录 </a> </li> </ul> </div> <!-- 最新资料 热门推荐 推荐专题--> <div class="recommend"> <div class="recommend-nav"> <a class=" active " href="/f/30WkwGVC22T.html?zzType=newFile" > 最新资料 </a> <a class="" href="/f/30WkwGVC22T.html?zzType=hotRecommend" > 资料动态 </a> <a class="" href="/f/30WkwGVC22T.html?zzType=recommendTopic" > 专题动态 </a> </div> <ul> </ul> </div> <!-- 立即下载 --> <div class="spiderDetail-footer"> <div class="left"> <p>免费</p> <p>已有人下载</p> </div> <div class="middle"> <!-- <a href="">下一篇相似资料</a> --> </div> <div class="download">立即下载</div> </div> <section> <div class="footer"> <div class="footer-site"> <div class="footer-site-container"> <a href="http://m-help.iask.com/helpCenter/63ad3efe53e78a1f9a71bd85.html" class="jsReplaceNavLink">关于我们</a> <a href="http://m-help.iask.com/helpCenter/5d11e55e0cf2d66b81a5513f.html" class="jsReplaceNavLink">侵权处理</a> <a href="/node/feedback.html">投诉反馈</a> <a href="http://m-help.iask.com/helpCenter/ishare.html">帮助中心</a> <a href="/index/f-a.html">网站地图</a> </div> <a class="copyright jsCopyright" href="https://beian.miit.gov.cn/">京ICP证000007-6 爱问文库-Copyright © <span class="jsCurentYear"></span> 版权所有</a> <p class="web-copyright jsWebCopyright"> <a target="_blank" href="https://beian.mps.gov.cn/#/query/webSearch?code=33021202002483" ref="noreferrer"> <img class="copyright-mark" src="https://static3.iask.cn/m202404112005/images/common/ic_mark.png" alt="">浙公网安备 33021202002483</a> </p> </div> </div> </section> </div> </div> <div class="dialog-mask"></div> </div> <div class="search-dialog"> <header class="m-header search-header cf"> <a class="btn-back JsSearchBackBtn"></a> <a class="btn-cancel btn-dialogue-search">搜索</a> <div class="search-con"> <form action="" id="search_from"> <div class="s-input-con v-middle"> <input type="search" name="cond" id="search-input" class="s-input" placeholder="搜索升级中,请稍后再试!" disabled> <a class="btn-input-delete" style="display: none;"></a> </div> </form> </div> </header> <section> <div class="search-main" id="hot-search-list" style="display: block;"> <div class="hot-search-con"> <h2 class="search-main-title">热门搜索</h2> <div class="hot-search-list" id="search-hot-box"> <a href="/search/home.html?cond=%25E7%25A6%25BB%25E5%25A9%259A%25E5%258D%258F%25E8%25AE%25AE%25E4%25B9%25A6">离婚协议书</a> <a href="/search/home.html?cond=%25E5%2585%25A5%25E5%2585%259A%25E7%2594%25B3%25E8%25AF%25B7%25E4%25B9%25A6">入党申请书</a> <a href="/search/home.html?cond=%25E6%2588%25BF%25E5%25B1%258B%25E7%25A7%259F%25E8%25B5%2581%25E5%2590%2588%25E5%2590%258C">房屋租赁合同</a> <a href="/search/home.html?cond=%25E8%25B4%25AB%25E5%259B%25B0%25E7%2594%25B3%25E8%25AF%25B7%25E4%25B9%25A6">贫困申请书</a> </div> </div> <div class="search-history"> <h2 class="search-main-title">历史搜索</h2> <ul class="search-history-list"></ul> <span class="delete-history-ele v-middle">清空历史搜索</span> </div> </div> <div class="search-main" id="link-search-list" style="display: none;"> <ul class="search-list"> </ul> </div> </section> </div> <!--js加载--> <script type="text/javascript"> var _speedMark = +new Date(), _version = "m202404112005", _head = "https://static3.iask.cn/m202404112005", _env="prod" </script> <script src="https://static3.iask.cn/m202404112005/javascripts/sea-modules/jquery/jquery/1.8.3/jquery.min.js"></script> <script src="https://static3.iask.cn/m202404112005/javascripts/sea-modules/fastclick/fastclick.min.js"></script> <script src="https://static3.iask.cn/m202404112005/javascripts/sea-modules/jquery/swiper/3.2.7/swiper.min.js"></script> <script src="https://static3.iask.cn/m202404112005/javascripts/sea-modules/seajs/seajs/2.2.0/sea.js"></script> <script src="https://static3.iask.cn/m202404112005/javascripts/seajs_config.js"></script> <script src="https://static3.iask.cn/m202404112005/javascripts/sea-modules/bilog/iaskWebSdk.js"></script> <script type="text/javascript" src="https://ssl.captcha.qq.com/TCaptcha.js"></script> <!--全网baidu统计--> <script type="text/javascript"> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d27104898957ad2d30354add6accb899"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); // <!--办公频道baidu统计--> var referrer = document.URL; if (/https?\:\/\/[^\s]*m.office.iask.com*/g.test(referrer)) { var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?9b8390329e1990c2bc0d3c360b5d1be7"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); } </script> <!--全网cnzz统计--> <div style="display:none"> <script src="https://s11.cnzz.com/stat.php?id=1260123088&web_id=1260123088" language="JavaScript"></script> </div> <script type="text/javascript"> window.pageConfig = { isDetail: true, isSend: true, page: { attr: 'other', type: 'detail', ptype: 'pindex', isDownload: '', owner: "4fcc32c90cf23ca33132c4be", preRead: "50", fileSourceChannel: 'seo_collection_outsource', old: '', // userTypeId: '', userTypeId: '', fileName: "网上购书系统", }, adv: { is360: '', isBaidu: '' }, params: { g_fileExtension: 'doc', g_fileId: '30WkwGVC22T', g_permin: '1', file_title: "网上购书系统",//需要用双引号 file_size: "259KB", // file_volume: '', file_format: 'doc', productType: '1', moneyPrice: '0', discountPrice: "0", totalPage: '51', vipFreeFlag: "", // todo vipDiscountFlag: '1', payTypeName: '', // todo site: '4', file_uid: '4fcc32c90cf23ca33132c4be', classidName1: '教育资料', classidName2: '高等教育', classidName3: '工学', fileName: '网上购书系统', payType: '', // todo classId: '', fileCategoryID: '1816||1817||1830', //资料分类 fileCategoryName: '教育资料||高等教育||工学', //资料分类名称 }, report: { uid: "", ptype: "pindex", fsource: "seo_collection_outsource", ftype: '', // todo format: "doc", cate: "1816", cateName: "", cate1: "1817", cate2: "1830", clickName: '', time: "", timestamp: +new Date() }, imgUrl: ["https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=0-7091","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=7093-14702","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=14704-22559","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=22561-31230","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=31232-39743","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=39745-48532","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=48534-56168","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=56170-63148","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=63150-70004","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=70006-77270","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=77272-83713","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=83715-91095","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=91097-114624","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=114626-121881","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=121883-128409","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=128411-135806","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=135808-143851","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=143853-149273","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=149275-155298","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=155300-160977","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=160979-180678","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=180680-187531","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=187533-194411","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=194413-199609","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=199611-205077","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=205079-209589","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=209591-266767","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=266769-287171","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=287173-293836","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=293838-299802","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=299804-305423","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=305425-311420","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=311422-316209","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=316211-322442","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=322444-328424","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=328426-334610","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=334612-340394","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=340396-346107","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=346109-352446","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=352448-358547","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=358549-365477","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=365479-371302","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=371304-377406","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=377408-383339","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=383341-388645","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=388647-434602","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=434604-486638","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=486640-520786","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=520788-526990","https://swf.iask.com/jGKHiA6dpjw.svg?ssig=QjeTeD5z7C&Expires=1719674726&KID=sina,ishare&range=526992-533509"], }; seajs.use(["dist/spiderDetail/init.js", "jquery"]) </script> <!-- cnzz统计代码 --> <script type="text/javascript">document.write(unescape("%3Cspan id='cnzz_stat_icon_1279079195'%3E%3C/span%3E%3Cscript src='https://v1.cnzz.com/stat.php%3Fid%3D1279079195' type='text/javascript'%3E%3C/script%3E"));</script> </body> </html>