基于JSP的网上书店系统的设计与实现论文 - 图文

更新时间:2024-01-06 18:03:01 阅读量: 教育文库 文档下载

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

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

摘 要

随着Internet信息技术的高速发展,以及个人,企业上网的迅速普及,企业的WWW网站在商业活动中发挥着越来越大的作用,互联网已经成为人们进行交易的主要方式。在信息时代,能够建立一个省时简单的购物环境,对商家和买方都是不小的诱惑,因此建立一个功能强大、操作简单且界面美观的电子商物网站,对企业的发展至关重要。

网上书店系统作为B2B、B2C(Business to Customer,企业对消费者),C2C(Customer to Customer,消费者对消费者)电子商务的前端商务平台,在其商务活动的全过程中起着举足轻重的作用。

系统使用Eclipse作为前台开发工具;使用Microsoft SQL Server 2000作为后台数据库的管理工具;使用的开发工具包是JDK Version 1.6;使用Tomcat 1.6.0作为Web服务器。另外,本系统采用了JSP+Servlet+JavaBean(MVC)三层架构模式。

本系统采用B/S架构。主要有两个参与者:客户和管理员。客户可以浏览图书信息,注册账号,修改自已的账号信息,购买图书,下发订单,给管理员留言等。管理员可对图书进行增删改查等维护工作,以及查看订单,查看留言和修改登录密码等。

关键词:B/S,JSP , Eclipse

共 IV 页 第 I 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

Abstract

With the rapid development of Internet information techology , as well as individua,the rapid popularization of Internet enterprises, enterprises in commercial activities of the WWW site is playing the more and more major role, the Internet has become the main way people traded. In the information age, building a time-saving shopping environment, simple to businessmen and the buyer is quite a temptation, thus establishing a powerful, simple to operate and interface aesthetics of electronic business content sites, to enterprise's development is very important.

As online bookstore system of e-commerce B2B, B2C(Business to Customer) and C2C(Customer to Customer) front in its business platform, and the whole process of business activity plays a pivotal role.

Systems use Eclipse as a receptionist development tools;Use Microsoft SQL Server 2000 as backend database management tools. Use development kit is JDK Version 1.60 ; Use 1.6.0 as a Tomcat Web server. In addition, this system USES a JSP + Servlet + JavaBean (MVC) three-layer structure mode.

The system USES the B/S structure. There are two major participants: the customer and administrators. Customers can browse books information,

registration number, modify own account information, buying books, issued orders, give administrator message, etc. Administrators can increase to revise check books such as maintenance, and view the order, check the message and modify login passwords, etc

Keywords: B/S,JSP , Eclipse

共 IV 页 第 II 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

目录

前 言 ................................................................................................................................... 1 一 网上购物系统概述 ........................................................................................................ 2

1.1系统开发背景 .......................................................................................................... 2

1.1.1网上购物的发展 ........................................................................................... 2 1.1.2网上购物系统的现状 ................................................................................... 2 1.2系统的开发意义 ...................................................................................................... 3 1.3 Java Web开发技术介绍 .......................................................................................... 3 1.4 本系统概述 ............................................................................................................. 6 1.5 开发所用软件介绍 ................................................................................................ 6

1.5.1 Eclipse介绍 .................................................................................................. 6 1.5.2 Tomcat介绍 .................................................................................................. 7 1.5.3 SQL Server 2000 介绍 ................................................................................. 8

二 系统需求分析与总体设计 .............................................................................................. 9

2.1 系统可行性分析 ..................................................................................................... 9

2.1.1技术可行性分析 ........................................................................................... 9 2.1.2 经济可行性分析 .......................................................................................... 9 2.1.3操作可行性 ................................................................................................... 9 2.1.4法律可行性 ................................................................................................... 9 2.2 系统需求分析 ......................................................................................................... 9 2.3系统总体设计 ........................................................................................................ 10

2.3.1 MVC模式介绍........................................................................................... 10 2.3.2 系统流程图 ................................................................................................ 11 2.4 数据库设计 ........................................................................................................... 13

2.4.1数据库ER图 .............................................................................................. 13 2.4.2 表格 ............................................................................................................ 18

三 系统详细设计 ................................................................................................................ 20

3.1数据库连接 ............................................................................................................ 20

3.1.1 JDBC介绍 .................................................................................................. 20 3.2 系统功能模块 ....................................................................................................... 20

3.2.1 登录模块 .................................................................................................... 20 3.2.2注册模块 ..................................................................................................... 21 3.2.3 图书操作模块 ............................................................................................ 22 3.2.4 购物车模块 ................................................................................................ 23 3.2.5 订单模块 .................................................................................................... 25 3.2.6 留言模块 .................................................................................................... 25 3.2.7 信息修改模块 ............................................................................................ 26

四 系统页面设计 ................................................................................................................ 29

4.1首页 ........................................................................................................................ 29 4.2 用户登录页面 ....................................................................................................... 29

共 IV 页 第 III 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

4.3 购物车页面 ........................................................................................................... 30 4.4 结算中心页面 ....................................................................................................... 31 4.5 用户注册页面 ....................................................................................................... 31 4.6 新增图书页面 ....................................................................................................... 32 4.7 修改图书页面 ....................................................................................................... 33 4.8 删除图书页面 ....................................................................................................... 33 4.9 查找图书页面 ....................................................................................................... 34 五 系统难点分析与软件测试 .......................................................................................... 35

5.1 系统难点分析之购物车模块 ............................................................................... 35

5.1.1购物车的归属问题 ..................................................................................... 35 5.1.2购物车的设置问题 ..................................................................................... 35 5.2系统测试 ................................................................................................................ 36

5.2.1 测试环境 .................................................................................................... 36 5.2.2软件测试的定义 ......................................................................................... 36 5.2.3软件详细调试 ............................................................................................. 36

总 结 .................................................................................................................................. 39 致 谢 .................................................................................................................................. 40 主要参考文献 ..................................................................................................................... 41 附录一:部分程序源代码 ................................................................................................. 42

1 数据库连接代码 ...................................................................................................... 42 2 登录模块代码 .......................................................................................................... 43 3 注册模块代码 .......................................................................................................... 44 4 购物车模块代码 ...................................................................................................... 45

共 IV 页 第 IV 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

前 言

目前,网络正以一种前所未有的冲击力在影响着人类的活动,包括人类的生产和日常生活。网络的诞生和发展,颠覆了传统的信息传播方式,冲破了存在于传统交流方式中时间和空间的种种壁垒,极大地改变了人类从物质到精神、从形式到内容、从生产到生活的各种活动,并且给人类带来了新的机遇和挑战。

2006年1月17日,中国互联网络信息中心(CNNIC)在京发布“第十七次中国互联网络发展状况统计报告”。报告显示,截至2005年12月31日,我国上网用户总数突破1亿,为1.11亿人,其中宽带上网人数达到6430万人。目前,我国网民数和宽带上网人数均位居世界第二。国家顶级域名CN注册量首次突破百万,达到109万,成为国内用户注册域名的首选,稳居亚洲第一。上网计算机数达到4950万台,网络国际出口带宽达到136106M,网站数达到69.4万个。IP地址总数达到7439万个,仅次于美国和日本,位居世界第三。

在互联网服务业务方面:电子邮件、搜索引擎、网上银行、在线交易、网络广告、网络新闻、网络游戏等服务业务仍然快速的发展着。

而本次毕业设计的任务是,构建一个电子商务网站,采用的主要技术是基于服务器端的JSP、Java的组件JavaBean,以及网页编程语言HTML。

JSP是Java Server Page的缩写,是由Sun Microsystems公司倡导、许多公司参与建立一种动态网页技术标准,它在动态网页的建设中有强大而特别的功能。JSP是一种服务器端HTML(或XML)嵌入Java代码的脚本语言,是开发Web动态网站快速而有效的工具,JSP技术的优势:

1. JSP技术是用Java语言作为脚本语言的。Java语言是成熟的、强大的、易扩充的编程语言。

2. 高效性与安全性。JSP在执行前先被编译成字节码,字节码由Java虚拟机解释执行,比源码解释效率高。

3. 可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。

4.稳定性。

5.产品的多样性。

目前,在国内JSP还是一种较新的技术。但JSP+Servlet+JDBC+JavaBean目前已经成为开发电子商务平台的主流技术。随着国内与国际的接轨,JSP必将成为网站开发技术的首选。

共 48 页 第 1 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

一 网上购物系统概述

1.1系统开发背景

1.1.1网上购物的发展

近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。

网上购物系统作为B2B,B2C(Business to Customer,即企业对消费者),C2C(Customer to Customer,即消费者对消费者)电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。本文主要考虑的是如何建设B2C的网上购物系统。 网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。

1.1.2网上购物系统的现状

目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。

采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。 首先,PHP缺乏规模支持。其次,缺乏多层结构支持。对于大负荷站点,解决方法只有一个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,组成二维阵列。而PHP则缺乏这种支持。还有上面提到过的一点,PHP提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。

ASP和JSP则没有以上缺陷,ASP可以通过Microsoft Windowsd的COM/DCOM获得ActiveX规模支持,通过DCOM和Transcation Server获得结构支持;JSP可以通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。

三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet

共 48 页 第 2 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

的WebSphere;西方另外一个非常著名的电子商务软件提供商,Intershop。它原来的产品Intershop1 2, 3, 4占据了主要的电子商务软件份额。它们都是通过CGI来提供支持 的。但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统软件。

总的来说,ASP,PHP,JSP三者都有相当数量的支持者,而这三者也各有所长,在开发过程中,我们应该根据实际的需要来使用最合适的技术,本系统则采用较新的JSP技术,一方面JSP的安全性和跨平台性比较好,另一方面,我也希望能从开发该系统的过程中,深入学习一下这门编程语言。

1.2系统的开发意义

Internet的发展,为改变传统的商业运作模式提供了一种技术上的可行性的方案:利用Internet的技术和协议,建立各种企业内部网Intranet,企业外部网Extranet,通过廉价的通讯手段,将买家与卖家、厂商和合作伙伴紧密结合在了一起,消除时间与空间带来的障碍,从而大大的节约了交易成本,扩大了交易范围。而在实际的生活中,这种方案已经被广泛的运用到了实际的商业活动中了,人们将这种交易模式称为:电子商务。

当今比较流行的网上购物系统国外有“淘宝(www.taobao.com)”,国内有“当当(www.dangdang.com)”。它们都是相当优秀的电子商务网站,对其他的网站提供了良好的典范。设计中可以学习参考他们的思想,了解和熟悉整个网站的开发流程及完整的电子商务网站应有的功能和注意事项。

设计和完成一个电子商务网站的,将会牵涉到许多技术上的问题,如:动态网页制作技术的,后台数据库的设计和管理,通过实际的制作个网站,可以避免纸上谈兵,在实践中掌握上述技术的使用。

1.3 Java Web开发技术介绍

J2EE(Java 2 Platform Enterprise Edition)建立在J2SE(Java 2 Platform Standard Edition)的基础上,为企业级应用提供了完整、稳定、安全和快速的Java平台。J2EE提供的Web开发技术主要支持两类软件的开发和应用,一类是做高级信息系统框架的Web应用服务器(Web Applcation Server),另一类是在Web应用服务运行的Web应用(Web Application)。

J2EE提供了企业级计算模型和运行环境,用于开发和部署多层分布式结构的应用模型。该模型具有重用组件的能力、基于扩展标记语言(XML)的数据交换、统一的安全模式和灵活的事务控制。它是通过提供企业计算环境所必需的各种服务,使得部署在J2EE平台上的多层应用可以实现高可用性、安全性、可扩展性和可靠性。

目前,Web动态网站的开发技术很多,如Servlet,JSP,ASP,PHP等,这些技术都得到了广泛应用,其中JSP技术的发展前景最明朗。JSP技术的前身是Servlet。Servlet

共 48 页 第 3 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

是由Java语言编写,运行在Tomcat服务器中,能够主动生成HTML标记和客户端需要的数据,将生成的数语返回到客户端。与传统的CGI和许多其他类似CGI技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。其详细信息表如表1-1所示:

表1-1 Servlet技术优势

优势 说明 在传统的 CGI中,每个请求都要启动一个新的进程,如果CGI程序 本身执行时间较短,启动进程所需要的开销很可能反而超过实际执 行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而高效 不是重量级的操作系统进程) 在传统CGI中,如果对同一CGI程序有N个并发请求,则该CGI程序 的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动等等 方便 Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头,处理Cookie、跟踪会话状态等 在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地 完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程功能强大 序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现 Servlet用Java编写,Servlet API具有完善的标准。为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到可移植性好 Apache、Microsoft IIS 或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet 节省投资 不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,加上这部分功能也往往是免费的 但遗憾的是,Servlet具有一个致命缺点,就是所有响应代码都是通过Servlet 程序生成的,如HTML标记。Servlet程序中大量的代码都是用来生成这些HTML标记响用代码,只有其中少部分代码用作数据的处理和响应。

开发Servlet程序起来要求较高。Servlet产生之后,没有像PHP和ASP那样,快速得到应用。因此Sun公司在结合了Servlet技术和Asp技术等特点,又推出了JSP技术,JSP技术完全继承了Servlet技术的优势,并具备了新的优势。如表1-2所示。

表1-2JSP优势

优势 说明 共 48 页 第 4 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

数据库内容和显示分离 可重用组件 采用标识简化页面开发 Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用了JSP标识或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标识和JavaBeans 群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封闭在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在服务器端,JSP引擎解释JSP标识,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性 绝大多数JSP页面依赖可重用且跨平台的组件(如JavaBeans或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者用户团本所使用。基于组件的方法加速了总体开发过程。 Web页面开发人员不会都是熟悉脚本语言的程序设计人员。JSP技术封装了许多易用的功能,用于在与JSP相关的XML的标识中生成动态内容。标准的JSP标识能够存取和实例化JavaBeans组件,设定或者检索群组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能 一种技术功能越是强大,其复杂性就越高,JSP技术也不例化。在使用JSP技术编写高效,安全的Web网站的同时,JSP也面临入门比较难的问题。与ASP,PHP相比,这三种技术各其优点。其详细信息如表1-3所示:

表1-3 JSP、PHP和ASP技术比较

JSP ASP PHP 参数 运行速度 快 较快 较快 运行耗时 较小 较大 较大 难易程度 容易掌握 简单 简单 运行平台 绝大部分平台均可 Windows平台 Windows/Unix平台 扩展性 好 较好 较差 安全性 好 较差 好 数据库支持 多 多 多 厂商支持 多 较少 较多 对XML的支持 支持 不支持 支持 函数支持 多 较少 多 对组件的支持 支持 支持 不支持 共 48 页 第 5 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

对分布式处理的支持 支持 支持 不支持 应用程序 较广 较广 较广 其中JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较IBM的E---business,它的核心的采用JSP/Servlet的Web Sphere.它推出的Enfinity就是采用JSP/Servlet的电子商务Application Server。

1.4 本系统概述

本网上书店系统采用的开发工具是Eclipse,采用Tomcat作为Web服务器,用SQL SERVER 2000作为数据库,编程语言为Java,JavaScript。显示的页面为JSP页面,另外用CSS来对页面的排版和美观。

本网上书店系统采用B/S模式。主要供两个角色使用:普通用户和管理员。普通用户可以查看图书,订购图书,登录,注册,修改密码以及发送订单和给管理员留言等;管理员可以对图书进行增删改查等维护工作,以及查看留言和订单等。

1.5 开发所用软件介绍

1.5.1 Eclipse介绍

eclipse-galileoEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布。2008年6月发布代号为Ganymede的3.4版。2009年7月发布代号为GALILEO的3.5版。

Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。

Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟

共 48 页 第 6 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。

Eclipse的主要组成:

Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。

Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 CPL发布,第三方组件有各自自身的许可协议。

1.5.2 Tomcat介绍

Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。经过多年的发展,Tomcat不仅是JSP和Servlet规范的标准实现,而且具备了很多商业Java Servlet容器的特性,并被一些企业用于商业用途。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断地改进,任何

共 48 页 第 7 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

一个感兴趣的程序员都可以更改它或在其中加入新的功能。

Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为7.0.12 Released 。

1.5.3 SQL Server 2000 介绍

SQL Server 是一个关系数据库管理系统,它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了。Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本;Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。在本书中介绍的是Microsoft SQL Server 以后简称为SQL Server或MS SQL Server。

SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的一个版本。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。

共 48 页 第 8 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

二 系统需求分析与总体设计

2.1 系统可行性分析

2.1.1技术可行性分析

硬件要求:主要配置为CPU(PII300以上)、内存(64M以上)、显卡(4M以上)以及大容量硬盘(10G以上)等。

软件要求:系统采用Eclipse和SQL Server 2000开发,用JSP制作系统的用户界面,SQL Server 2000制作后台数据库,两者结合完成系统功能,可运行在Windows98及以上的系列操作系统上。

2.1.2 经济可行性分析

由于本系统开发的费用比较低,而在交付使用之后几年内所得的效益完全超过软件的开发费用,此后就会带来相应的经济效益,也会因为此软件的高效性、准确性、及时性赢得广大客户的尊重,取得无形的社会效益。

2.1.3操作可行性

本系统运行在通用的Windows操作系统上,具有浏览器的前台。具有简单易学,使用方便等特点,熟悉计算机的人员不需要再经过专门的培训即可熟练操作。

2.1.4法律可行性

本系统是完全有计算机学院的学生单独开发完成的软件,使用的是Eclipse和SQL Server2000等授权软件,它不是模仿他人已有的软件,在软件中也不会设置各种逻辑陷阱、特洛伊木马以及其它非法程序,也不会借此发布非法事件,故在法律上、专利问题上不会存在违反法律的行为。

2.2 系统需求分析

近年来,随着Internet的讯速崛起,互联网已日益成为收集提供信息的最佳渠道,并逐步进入传统的流通领域,于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。

网上书店系统作为B2B、B2C(Business to Customer,企业对消费者),C2C

共 48 页 第 9 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

(Customer to Customer,消费者对消费者)电子商务的前端商务平台,在其商务活动的全过程中起着举足轻重的作用。

网上购物是一种具有交互功能的商业信息系统,它向用户提供静态和动态两类信息资源。所谓静态信息是指那些经常变动或更新的资源,如公司简介,管理规范和公司制度等;动态信息是指随时变化的信息,如商口报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可随商家和用户方便地传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。

购物系统作为电子商务平台实现的一个方面,在推动电子商务的发展上起着非常重要的作用。

2.3系统总体设计

2.3.1 MVC模式介绍

MVC模式即:“Model-View-Controller”,就是“模式-视图-控制器”。视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML,XML和Applet。模型(Model)就是业务流程/状态的处理以及业务规则的制定。控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。MVC应用程序由这三个部分组成。

模型,视图与控制器的分离,使得一个模型可以具有多个示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致示图的更新。这实际上是一种模型的变化-传播机制。

现在我们来了解一下MVC三个部分在JSP架构中的对应关系位置。View处于Web层或者说是Client层,通常是JSP/Servlet,即页面显示部分。Controller也处于Web层,通常用Servlet来实现,即页面显示的逻辑部分实现。Model处于中间层,通常用服务端的JavaBean或者EJB实现,即业务逻辑部分的实现。其形式如图2-1所示。

共 48 页 第 10 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

1请求 浏览器 控制器 Servlet 2实例化 应用服务器 6响用 4 调用 JSP视图 5调用 JavaBean 模型 3数据处理 Database 数据库 图2-1 MVC三层架构

2.3.2 系统流程图

整个系统的流程图如图2-2所示。

共 48 页 第 11 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

管理员 管理员 用户 用户 注册 登录 登录 NO NO 通过 通过 YES 查看图书 查找图书 YES 继续 NO 放入购物车 查看图书 增删改查 查看留言 查看订单 修改密码 已登录 YES 发送订单 退出登录 退出登录 2-2系统流程图

共 48 页 第 12 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

2.4 数据库设计

2.4.1数据库ER图

实体:

name bid author 关系: 属性:

press books price presentation reserve type rdate discount

图2-3 books属性图

共 48 页 第 13 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

nickname realname cid password customer zip mailbox telephone address consumption

图2-4 customer属性图

共 48 页 第 14 页

mid password manager rr 图2-5 manager属性图

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

oid cid presentation orders sum paypattern issdate

图2-6 orders 属性图

bid count item cid subtotal 图2-7 item 属性图

共 48 页 第 15 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

messageId cid message date content

图2-8 message 属性图

pattern customer cid

1 sum 发送 issdate n presentation orders oid 图2-9 发送订单

共 48 页 第 16 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

cid

customer 1 content 发送 n messageId messager 图2-10 发送留言

manger mid

1 新增 rdate n books bid

图2-11 新增图书

共 48 页 第 17 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

2.4.2 表格

(1)表menager。记录管理员的账号与密码。

(2)表customer。记录客户信息。

(3)表books。记录书信息。

(4)表orders。记录订单信息。

共 48 页 第 18 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

(5)表item。记录着购物车的一条记录的信息。

(6)表message。记录着留言的信息。

共 48 页 第 19 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

三 系统详细设计

3.1数据库连接

3.1.1 JDBC介绍

JDBC(Java Data Base Connectivity ,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它是由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够使用纯Java语言编写完整的数据库应用程序。

JDBC是Sun提供的一套数据库编程接口API函数,由Java语言编写的类,界面组成。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用。Java和JDBC的结合可以让开发数据库应用程序时真正实现“Write Once,Run Everywhere!”

JDBC的用法:

本系统中运应的的是“四层应用模型”,即:命令先是被发送到服务的“中间层” 即业务逻辑层,然后由它调用数据库访问层称为O/R层。最后数据库访问层对SQL语句进行处理,通过JDBC访问数据库,最后将结果返回给中间层,再由中间层将结果返回给客户。如图3-1所示。 Http,RMI等 数据库协议 客业务O/R映

JDBC 数据库 户逻辑射,中机 中间间层 图3-1四层应用模型

3.2 系统功能模块

3.2.1 登录模块

管理员想要进行相关操作或者用户想要购买书都要进行登录。输入的账号和密码将提交到相应的Servlet类中进行处理。如果账号和密码都正确,则通过,否则不能过。如图3-2所示。

共 48 页 第 20 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

登录页响应请求 Servlet NO 通过 YES

图3-2 登录模块流程图

3.2.2注册模块

当用户想要创建一个账号时,便要进行注册。通过注册页面,用户输入注册信息,点击“注册”后,信息首先将提交到过滤器,判断输入的信息是否合法。如果不合法,则返回注册界面,重新输入;如果合法过滤器则将信息进一步提交给Servlet处理,Servlet调用数据库操作类,将信息保存到数据库中。如图3-3所示。

请求 注册页过滤器

响响 应应 NO 合法

YES Servlet 调用

数据库处理

保存

数据库

图3-3 注册模块流程图

共 48 页 第 21 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

3.2.3 图书操作模块

(1)新增。当管理员登录之后,便可以向数据库中新增图书。通过新增页面,管理员输入要新增的书的信息,点击“新增”之后,信息便被提交到过滤器中。过滤器判断管理员输入的是否合法。如果不合法,返回新增页面;如果合法,则过滤器将信息进一步提交给Servlet处理,Servlet将调用数据库处理类,将信息保存到数据库中。如图3-4所示。

新增页面 过滤器 响 应响应

NO 合法 YES Servlet 调用

数据库处理类

保存

数据库

图3-4 新增模块流程图

(2)删除。当管理员登录之后,可以根据书的编号,对书进行删除。通过点击“删除”,将要删除的书的编号提交到Servlet中,Servlet便根据书的编号调用数据库处理类,将书从数据库中删除。如图3-5所示。 请求 Servlet 删除页面 调用 共 数据库处理类48 页 第 22 页 响应 删除 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

图3-5 删除模块流程图

(3)修改。当管理员登录之后,可以对书信息进行修改。通过点击“修改”, 信息便被提交到过滤器中。过滤器判断管理员输入的是否合法。如果不合法,返回新增页面;如果合法,则过滤器将信息进一步提交给Servlet处理,Servlet将调用数据库处理类,将信息保存到数据库中。该流程图和图3-4类似。

(4)查找。管理员和客户都可以对书进行查找。通过点击“查找”,关键字和查找的内容便被提交到Servlet中,Servlet将调用数据库处理类,将查找到的结果返回到查找页面。如图3-6所示: 请求 调用 Servlet 数据库处理类 删除页面 响应 返回结果 查找 数据库 图3-6 查找模块流程图

3.2.4 购物车模块

购物车模块是本系统中一个非常重要的模块。一个购物车包括以下几项: 1 客户的昵称(昵称是唯一的,可以用来标识不同的客户)。表示这个购物车是谁的。可以为空,但在进行结算时,这个值必须初始化,即客户必须已登录。

2 一个由Item项组成的集合。Item是由书号,书名,数量,小计组成的。一个购物车可以有0个或多个Item项。当一本书第一次加入购物车时,便新建一个Item项。

当再次加入书时,数量加1,并且小计加上书的单价。当一本书从购物车中删除时,数量减1,并且小计减去书的单价。如果某个Item项的数量为0,则删去该项。

3 总计。所有小计的和。流程图如3-7所示。

共 48 页 第 23 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

购物车 书 放 入 书 删除 NO 是否有购物车 YES 是否 登录 YES 该书是否为第一次加入购物车 对应的Item的count减1。小计减去单价 YES NO 该Item项的count是否为0 新建Item项 YES 创建一个带呢称的购物车 YES 创建一个匿名购物车 对应的Item项加1,小计加上单价 删除该Item项 继续 继续 图3-7购物车模块流程图

共 48 页 第 24 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

3.2.5 订单模块

当客户购物完毕要发送订单时,如果未登录,则先进行登录。如果登录了,且购物车里有图书,则进入订单发送页面。这时,客户还可以修改购物车或者个人信息。点击“提交定单”之后,信息将提交到Servlet。Servlet调用数据库处理类,将信息保存到数据库中。而管理员则可以查看所有的订单。如图3-8所示.。 订单发送页面 YES 修改 NO 请求 提交订单 修改个人信息或者购物车 交易成功页面 响应 Servlet 调用 数据库处理类 保存 数据库 图3-8订单模块流程图

3.2.6 留言模块

用户可以通过留言模块给管理员留言,点击“提交”之后,信息将被提交到Servlet。Servlet将调用数据库处理类,将信息保存到数据库中。而管理员则可以查看所有留言并删除留言。管理员点击“删除”之后,信息将被提交到Servlet。Servlet将调用数据库处理类,将留言从数据库中删除。如图3-9所示。

共 48 页 第 25 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

用户 管理员 留言页面 留言页面 请求 响应 请求 响应 Servlet Servlet 调用 调用 数据库处理类 数据库处理类 保存 删除 数据库 数据库 图3-9留言模块流程图

3.2.7 信息修改模块

用户和管理员登录之后都可以修改自己的密码。另处,用户在发送订单之前也可以修改个人信息如:收获地址,联系电话等。

(1)当修改密码时,信息将会被提交到Servlet,Servlet判断原密码是否正确和两次密码输入是否一致。若原密码不正确或者两次密码输入不一致,则返回修改页面重新输入。若两者都无误,则调用数据库处理类,将新密码保存到数据库中。修改成功。如图3-10所示。

共 48 页 第 26 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

密码修改 请求 Servlet 原密码是 否正确 NO YES 两次密码是否一致 NO YES 数据库处理类 保存 数据库 图3-10密码修改流程图

(2)当用户修改个人信息时,信息首先将被提交到过滤器中,如果输入不合法,则返回修改页面。如果合法,则信息会进一步提交到Servlet中,Servlet将调用数据库处理类,将新信息保存到数据库中。如图3-11所示。

共 48 页 第 27 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

个人信息修改 请求 过滤器 是否 合法 NO YES Servlet 调用 数据库处理类 保存 数据库 图3-11个人信息修改流程图

共 48 页 第 28 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

四 系统页面设计

每个页面(除留言页面,帮助页面,退出页面,成功交易页面外)头部和脚部都是一样的,而中间的部分因不同页面而不同。

4.1首页

首页供用户或者管理员登录,用户注册,查看图书等。如图4-1所示:

图4-1未登录的首页

4.2 用户登录页面

用户输入昵称和密码,如果正确则跳转至首页。如果有误,则提示,并重新登录。如图4-2所示:

共 48 页 第 29 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

图4-2用户登录页面

4.3 购物车页面

购物车页面显示了购物车的信息:书名,书的单价,数量,小计,以及总计。 点击右下脚的“进入结算中心”便可以进入结算中心。如图4-3所示:

图4-3购物车页面

共 48 页 第 30 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

4.4 结算中心页面

用户购物完毕后便可以进入结算页面进行结算并发送订单。订单上显示了用户的购物车信息和个人基本信息,用户可以修改。另外,用户还必须选择付款方式。以及填写对该订单的一些备注(可不填)。如图4-4所示:

图4-4结算中心页面

4.5 用户注册页面

用户输入注册信息,便可以注册。如果用户输入的信息合法,则显示“注册成功信息”;如果用户输入的信息不合法,则提示相应的错误输入。如图4-5所示:

共 48 页 第 31 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

图4-5 用户注册页面

4.6 新增图书页面

通过此页面,管理员可以向数据库中添加新的图书。如果管理员输入的信息合法,则显示“新增成功”;如果管理员输入的信息不合法,则提示相应的错误信息。如图4-6所示:

图4-6 新增图书页面

共 48 页 第 32 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

4.7 修改图书页面

通过此页面,管理员可以修改现有图书的信息,并把新的信息保存到数据库中。如果管理员输入的信息合法,则显示“修改成功”;如果管理员输入的信息不合法,则提示相应的错误信息。如图4-7所示:

图4-7 修改图书页面

4.8 删除图书页面

通过此页面,管理员可以删除数据库现有的图书。点击“删除”之后,则可以删除该书,并提示管理员图书已删除。如图4-8所示:

共 48 页 第 33 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

图4-8 删除图书页面

4.9 查找图书页面

用户或者管理员通过选择关键字和内容便可以查找与之相关的图书。如图4-9所示:

图4-9 查找图书页面

共 48 页 第 34 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

五 系统难点分析与软件测试

5.1 系统难点分析之购物车模块

本系统最大的难点我觉得在于购物车模块。

5.1.1购物车的归属问题

当我们逛一个网上商店时,我们可以先登录,然后浏览商品,并购买商品;也可以不登录,浏览商品,将商品放入购物车,只是在结算的时候需要进行登录,并根据您的账号显示出您的基本信息。本系统也是这样设计的。并且一个用户在不同页面之间的跳转时,会维持当前的系统中已登录的账号和购物车是一样的。这就是靠JSP的内置对象Session来起用的。

Session对象简介:Session对象是JSP中一个很重要的内置对象,当用户与服务器连接时,服务器为每个用户创建一个Session对象,并设定其中的内容。创建的Session对象之间相互独立,服务器可以借此来辨别用户信息,进而提供个别服务。Session对象在用户第一次连接到服务器时自动创建,并被并联到Request对象。

本系统中,当用户第一次打浏览器时,系统便为之分配一个Session对象。此后,用户在不同页面之间切换时,其Session对象是不变的。因此通过Session对象便可以维持用户在整个从登录到退出期间同一个账号,同一个购物车。当用户退出时,系统便调用Session对象的removeAttribute方法来注销Session对象里面的内容。当用户再次登录时,此时的Session对象便不同了。

5.1.2购物车的设置问题

本系统中,购物车主要包括三大部分。一是nickname,用来表是这个购物车的归属。二是一个以Item对象作为元素的集合,Item表示购物车的一项,由图书编号,图书名称,数量,小计购成。三是总计,所有小计之后便购成总计。

购物车类的主要方法:构造函数(两个,分别用来构造一个带nickname的购物车和一个匿名的购物车),addToList(向购物车中增加一条记录),delFromList (从购物车中删除一条记录), getSum(到得总计)。

共 48 页 第 35 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

5.2系统测试

5.2.1 测试环境

操作系统:Windows XP

数据库:Microsoft SQL Server 2000 开发工具平台:Eclipse

5.2.2软件测试的定义

软件测试的目的就是在软件投入生产性运行之前,尽可能多的发现软件中的错误.目前,软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。

测试的目标:

1.测试是为了发现程序的错误而执行程序的过程;

2.好的测试方案实际可能发现迄今为止尚未发现的错误的测试方案; 3.成功的测试是发现了至今为止尚未发现的错误的测试。 该软件经过了先期的模块测试和后期的综合测试,一切正常,达到了预期的要求。

5.2.3软件详细调试

(一)密码修改

在用户密码修改模块,首先要先输入原始密码,再两次输入新密码。以用户zly为例。输入:

(1)

原密码:123 新密码:abc 确认密码:abc 预测:修改成功 测示结果:修改成功。 (2)

原密码:123 新密码:空 确认密码:空 预测:修改失败 测示结果:修改成功

原因:因为这时原密码输入正确,且两次密码输入相同,满足密码修改的条件。这时新密码便是空,这不是我们想要的。之后,我便把新密码和确认密码都设为非空,一旦出现空的情况便提示出错,要求再次输入。

共 48 页 第 36 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

(二)注册

在用户注册模块,用户输入点击提交后,便会对用户输入的信息进行检测,如果合法则注册成功,如果失败,则提示错误信息。输入:

(1) 呢称:abc

真实姓名:张三 密码:123 确认密码:123

邮箱:zhangsan@sina.com 地址:安徽省马鞍山市 电话:13635551234 邮政编码:123456 预测:修改成功 测示结果:修改成功 (2)

呢称:abc

真实姓名:张三 密码:123

确认密码:123 邮箱:zhangsan

地址:安徽省马鞍山市 电话:13635551234 邮政编码:123456 预测:邮箱格式错误 测示结果:邮箱格式错误

在测试过程中,我经过模块测试,排除了系统的大部分错误。当然排除所有错误是不太可能的,我想应该还有些不易检测到的错误还没有被发现,需要在使用的过程中进一步的完善,数据库的加密是一个重要的概念,在实际的应用过程中是一个尚待解决的问题,应该做好数据库的完善工作,特别是备份和安全工作;另一方面本系统没有制作相关的打印,由于时间仓促难免有错误和不完善的地方,希望老师能够帮我指点和纠正。

测试总结

共 48 页 第 37 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

综合以上测试让我了解到:写代码的过程是不断调试的过程,其中内容和经过不在这里一一赘述。事实上有些纠错的过程往往是出人意料的,比如:临界值的选取要考虑全面,否则系统就不能正常运行,程序的健壮性就不够。十分感谢我的导师在各个方面给予了我很大的帮助,让我尽量全面地考虑到各种不同情况。另外,具体写代码时我也深深地体会到软件测试在编程中的占有的重要性,而且在本软件的测试中,让我确实的增长了不少知识,确实是收益匪浅。

共 48 页 第 38 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

总 结

通过这几个月对毕业设计的不断更新和完善,我所做的网上书店系统已经基本上成型,基本完成了网上购物系统所要求的主要功能。当然由于时间仓促,加之本人水平有限,系统中难免存在着许多疏漏和不足之处,这就要求我在日后的工作中更加努力的学习和提高。

几个月的时间不知不觉地过去了,现在看着自己的劳动成果,不禁感慨万千。在这次的毕业设计中,我体会最深的是书本知识和实践相结合的问题。书本知识和实际工作的差距,不是说几次上机,几次实验就可以完美解决的。它需要我们用不断的实践去亲身体会,它要求我们自身拥有克服困难,解决问题的能力,而这些都是我们以前在大学生活中没有体会到的。在今后的学习工作和生活中,我还有很多要学习的知识,还需要进一步的,更深层次地积累扎实的实践技术。

现在,理论知识不仅得到了进一步地理解,还将它和具体的应用系统联系起来,分析它在实际中的应用。毕业设计任务的完成仅仅是一个开始,毕业以后会有更多的挑战等着我去面对。毕业设计的过程对我来说是宝贵的经验,其中的历练积累,让我不至于一见到问题就手忙脚乱,可以充满信心地去面对任何考验,为自己的未来开创一片精彩的天地。

共 48 页 第 39 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

致 谢

本论文是在xxx老师的悉心指导下完成的。xxx在该项目的需求分析和设计分析时给了我很多的帮助,系统的每一个功能,xxx都和我进行了详细的探讨。作为一名即将离校的学生,在就业和以后人生规划问题上的迷茫,许老师也给了我一些宝贵的指引。在此,感谢许老师的督促和指导。

感谢我的父母,这么多年对我学业的支持。在实习的这段时间里,我深刻感觉到了挣钱很辛苦,这些年为了我能够继续求学,他们辛苦了。

另外,我还要感谢计算机学院的各位领导和老师们,感谢您们大学四年里传授我知识,谢谢您们在学业上的精心指导。此外,感谢四年来所有鼓励和帮助过我的同学、学长、学姐们。是他们给我了学业、生活上的帮助与支持,祝他们事业有成。最后向参与此次答辩的老师致以深深的谢意!

共 48 页 第 40 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

主要参考文献

1. 张银鹤,刘治国 《《JSP完全学习手册》》,北京:清华大学出版社,2007.11 2. 连洪武,《《Eclipse Web开发从入门到精通》》, 北京:清华大学出版社,2007.5 3. 陈刚,《《CSS标准网页布局开发指南》》,北京:清华大学出版社,2007.3 4. 张海藩,《软件工程导论》(第三版),北京:清华大学出版社,1998.1 5. 王珊,萨师煊《《数据库系统概论》》,北京,高等教育出版社,1999.6 6. 李钟慰,马文强《《Java从入门到精通》》,北京,清华大学出版社,2008.9 7. 温谦,《《HTML+CSS网页设计与布局从入门到精通》》,北京,人民邮电出版社2008.8 8. 张军《《 JSP网络应用开发例学与实践》》,北京,清华大学出版社,2006.4

共 48 页 第 41 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

附录一:部分程序源代码

1 数据库连接代码

package database;

import java.sql.Connection; import java.sql.DriverManager;

public class DBConnection { private String driver; private String url; private String user; private String password;

public DBConnection() { this.driver=\; this.url=\hoping;\;//直接连到webshopping数据库 this.user=\; this.password=\; }

public Connection getDBConnection() { try { System.out.println(\正在连接到数据库......\); Class.forName(driver); Connection conn = DriverManager.getConnection(url,user,password); System.out.println(\已连接到数据库!\); return conn; } catch (Exception e) { System.out.println(\连接数据库出错!\+e); } return null; } public static void main(String[] args) { DBConnection dbc=new DBConnection(); dbc.getDBConnection(); } }

共 48 页 第 42 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

2 登录模块代码

package servlet;

import java.io.IOException; import java.sql.SQLException;

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import database.*; import bean.*;

public class Clogon extends HttpServlet { GetData getdata=new GetData(); private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Customer customer=new Customer(); String nickname=new

String(request.getParameter(\).getBytes(\),\); String password=new

String(request.getParameter(\).getBytes(\),\); try { customer=getdata.getCustomerByNickName(nickname); } catch (SQLException e) { e.printStackTrace(); } if(!customer.getNickName().equals(\)&&customer.getPassword().equals(password)){ request.setAttribute(\, nickname); request.getRequestDispatcher(\).forward(request, response); } else{ request.setAttribute(\,\昵称或密码错误!\ ); request.getRequestDispatcher(\).forward(request, response); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void init() throws ServletException {

共 48 页 第 43 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

} }

3 注册模块代码

package servlet;

import java.io.IOException; import java.sql.SQLException;

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import database.InputData;

public class Regist extends HttpServlet{ private static final long serialVersionUID = 1L; InputData inputdata=new InputData(); String message=\; boolean success=false; public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException{ System.out.println(\); String nickname=new

String(request.getParameter(\).getBytes(\),\); String realname=new

String(request.getParameter(\).getBytes(\),\); String password=new

String(request.getParameter(\).getBytes(\),\); String mailbox=new

String(request.getParameter(\).getBytes(\),\); String address=new

String(request.getParameter(\).getBytes(\),\); String telephone=new

String(request.getParameter(\).getBytes(\),\); String zip=new

String(request.getParameter(\).getBytes(\),\); try { success=inputdata.insertCustomer(nickname, realname, password, mailbox, address, telephone, zip); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(success==true) message=\注册成功!\; else message=\注册失败!\;

共 48 页 第 44 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

request.setAttribute(\, message); request.getRequestDispatcher(\).forward(request, response); } public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ this.doPost(request, response); } public void init()throws ServletException{ } }

4 购物车模块代码

package servlet;

import java.io.IOException; import java.sql.SQLException;

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;

import bean.*;

public class DoCart extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String op=request.getParameter(\); String bid=request.getParameter(\); HttpSession session = request.getSession(); if(op.equals(\)) { if(session.getAttribute(\)==null) { String

nickname=(String)session.getAttribute(\); if(nickname==null) { Cart cart=new Cart(); try { cart.addToList(bid); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }

共 48 页 第 45 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

session.setAttribute(\, cart); } else { Cart cart=new Cart(nickname); try { cart.addToList(bid); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } session.setAttribute(\, cart); } } else{ Cart cart=(Cart)session.getAttribute(\); try { cart.addToList(bid); session.setAttribute(\, cart); } catch (SQLException e) { e.printStackTrace(); } } request.getRequestDispatcher(\).forward(request, response); } if(op.equals(\)) { System.out.println(\); Cart cart=(Cart)session.getAttribute(\); if(cart!=null){ System.out.println(\+bid); cart.delFromList(bid); request.getRequestDispatcher(\).forward(request, response); } } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); }

共 48 页 第 46 页

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

Top