叮叮网上书店

摘   要

本网上购书系统是基于B/S架构的三层Web应用,即浏览器与服务器模式,浏览器可以使用IE6.0、Netscope4.0、Firefox Web Browser等,服务器采用开源的Tomcat5.0,数据库采用开源的MySQL5.0。本系统基于Java 2 Enterprise Edition (J2EE) 平台,使用Java、XML、JavaScript与JSP语言,Struts与Hibernate等开源框架进行开发。

本论文主要进行产品管理模块的产述,可以让用户非常容易在页面上看见数据库中所存的所有书籍名称,并且能够查看到单本书籍的价格、产品和简单描述,然后用户对自己喜爱的书籍进行选购,最后添加到用户管理模块的购物车中去。

本文中所做的主要工作如下:介绍了开发工具的使用及相关配置,阐述了整个模块的结构、数据库的设计及工作原理,建立了产品管理模块并进行了测试。

本论文主要分析了基于MVC框架在系统开发中的应用以及网上销售系统的业务逻辑与具体实现。

关键词:网上购书系统;Hibernate;Java;JSP;XML; Struts;

Abstract

Web Store System is according to three layer Web of the B/S structure application, namely the browser and the server mode, the browser can use IE6.0, Netscope4.0, Firefox Web Browser,the server adoption opens the Tomcat5.0, the database adoption opens the MySQL5.0. This system according to the Java 2 Enterprise Edition (J2EE) terrace, the usage Java and the JSP language, the Struts and Hibernate etc. open the source frame to carry on a development.

This paper product management module in the middle, you can allow users to easily on the page to see the database in the name of all the books and can read books to the single-price, product and a brief description, and users of their favorite Books to purchase, add it to the final user management module to the shopping cart.

   In this paper, the major work done by the following: the development tools and the use of the configuration, described the structure of the entire module, database design and working principle, a product management module and conduct the test.

This thesis mainly analyzed the MVC frame in the system the development of the application and net up sell the business logic and concrete realization of the system.

Key WordsPurchase books online system; Hibernate;Java;JSP;XML; Struts;

目录

摘   要

Abstract

第1章  绪论

1.1课题研究背景

1.2课题研究意义

1.3国内外的发展现状

1.4 预期实现效果

第2章  开发工具及运行环境的搭建

2.1 服务器配置

2.2 JDK的安装与环境变量的配置

2.3 Tomcat 安装与环境变量的配置

2.4 MyEclipse6.0安装

2.5 MySQL安装

第3章  技术简介

3.1 Java语言

3.2 JavaScript语言

3.3 XML语言

3.4 HQL 语言

3.5 JSP语言

3.6 Hibernate技术

4章  需求分析

4.1 技术可行性分析

4.2 操作可行性分析

4.3 成本可行性分析

5章  总体分析与设计

5.1 系统总体结构设计

5.2系统各层的设计实现

5.2.1 MVC 模式概述

5.2.1.1  Model

5.2.1.2 View

5.2.1.3 Controller

5.3 数据库的设计

5.3.1 系统实体关系图

5.3.2 数据库表

5.4 模块的详细设计

5.4.1产品模块的主要功能

5.4.2 页面的建立

5.4.3 实体类的建立

5.4.4 自定义控制器类Action

6章  软件测试

6.1 软件测试的目的和方法

6.2 具体测试

结论

致谢

参考文献

附录1  程序源代码

附录2  英文文献及中文翻译

第1章  绪论

1.1课题研究背景

目前,网络正以一种前所未有的冲击力在影响着人类的活动,包括人类的生产和日常生活。网络的诞生和发展,颠覆了传统的信息传播方式,冲破了存在于传统交流方式中时间和空间的种种壁垒,极大地改变了人类从物质到精神、从形式到内容、从生产到生活的各种活动,并且给人类带来了新的机遇和挑战。在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。Internet上发布信息主要是通过网站来实现的,获取信息也是要在Internet“海洋”中按照一定的检索方式将所需要的信息从网站上下载下来。因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。

网络在现代生活中日益盛行,越来越多的人对此也极为痴迷,因为网络使人们的日常生活不仅可以了解到最新的信息,开阔自己的视野,同时也通过这一工具,开始了新的购物方式——网上购物系统。方便广大群众购物,为此构建网上网上购书系统。

1.2课题研究意义

随着社会高科技,商品经济化突飞猛进的发展,计算机的应用已经普及到经济和社会生活的各个领域。为了适应现代社会人们高度强烈的时间观念,产品生产-销售-客户订单管理系统软件为企业,公司等的销售管理带来了极大的方便。产品生产-销售-客户订单管理系统能够为用户提供可靠的信息储存和快捷的信息处理手段。长期以来人们使用传统人工的方式管理销售信息,这种管理方式存在着许多缺点。随着科学技术的不断提高,计算机日趋成熟,其强大的功能已为人们深刻认识,它已经进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对企业、公司的产品销售信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大的提高一个企业、公司销售管理的效率。因此,开发这样一套管理软件成为很有必要的事情,它能够具体化、合理化的管理单位的销售信息情况,用结构化的思维方式去了解计算机的工作原理。

1.3国内外的发展现状

因特网的迅猛发展正以前所未有的深度和广度影响和改变着人类生活的各个方面,越来越多的人开始意识到因特网所蕴含的巨大经济价值和无穷商机,并积极投身于电子商务活动。实际上,电子商务是一些商业行为的电子化,例如网上商店、网上贸易等。就网上商店来说,网上书店是目前应用最广、最成功的典范之一。网上书店的崛起对传统的图书流通体系产生了强烈的冲击,有效地缩短了图书流通发行环节,将广大读者、图书、出版者、发行者紧密地结合在一起,大大提高了图书流通率。

 世界上第一家网上书店是1991年在美国联机公司在网络上建立的“阅读美国书店”。目前,最负盛名的是美国西雅图亚马逊图书公司的亚马逊网上书店。它创建于1995年,供书品种达310余万种,年顾客达500万人次,其价格优惠20~50%。金融结算制度完善,配送服务高效,实现了零库存运转。英国网上书店较著名的有因特网书店。德国的网上书店主要有图书图书在线网上书店、网上书店。

我国第一家网上书店是 1995年建上的中国书店网上书店。1997年杭州新华书店建立了新华书店系统的第一个网上书店。截止2008年3月,我国除了已建立网站的800多家出版社外,已开通的网上书店有200家左右。比较有影响的有当当网上书店、蔚蓝网络书店、北京图书大厦、全国购书网等。

互联网信息平台的兴起,为网上购书系统的业务带来了极大的便利条件,随着计算机网络规模的日益庞大,网上销售系统的业务不断壮大与完善,网上出现了许多功能强大、业务全面的销售网站,提出了许多先进的购物思想,目前网上购物已经成为人们日常生活中不可缺少的重要部分。

1.4 预期实现效果

当一个游客第一次登录网站时,可以浏览网站内的商品,当游客想要选购某本书籍时,可以把书籍存储购物车中去。当你已经购买完商品,想选择结帐的时候,你将会直接跳转到登录的界面,你可以在网站注册新的用户名,只有注册用户才可以购物(这些功能是需要借住另外的设计者所设计模块的帮助来实现)。本模块主要实现以下功能:

  1. 可以让数据库中在页面上显示出来。
  2. 用户能够选购产品。

第2章  开发工具及运行环境的搭建

2.1 服务器配置

数据采集和数据整和是基于Unix平台,其他的几个模块的要求是要有一个服务器容器(如:Tomcat),要有mySQL数据库平台,支持java编程(即:JVM),多种操作系统,突出java跨平台的优势;

服务器配置:

A.硬件平台:

CPU:P4  1.8GHz ;

内存:256M 以上 ;

B.软件平台:

操 作 系 统:WINDOWS  XP;

数  据  库 :MYSQL ;

开发工具包 :JDK 1.5.1 ;

JSP 服务器 :TOMCAT ;

2.2 JDK的安装与环境变量的配置

使用JDK1.5.0.08(windows版)双击“jdk-1_5_0_08-windows-i586-p.exe”安装文件,开始安装jdk,安装步骤按默认即可(JDK是不需要运行的,它只是用来配合eclipse的使用,在eclipse6.0中是不需要安装JDK的)。

系统环境变量配置:

右键单击“我的电脑”,然后选择“属性”,在打开的对话框中,选择“高级”选项卡,然后单击下面的“环境变量”按钮,在弹出的环境变量对话框中,看下面的“系统变量”块,单击“新建”按钮,弹出“新建系统变量”对话框,然后创建变量名为“JAVA_HOME”的变量,变量值为“C:\Program Files\Java\jdk1.5.0.08\”(即安装JDK时所选的安装JDK的根目录);然后再在系统环境变量中选择“Path”变量,单击“编辑”按钮,弹出编辑系统变量对话框,在“变量值”的后面添加“;%JAVA_HOME%bin”。

2.3 Tomcat 安装与环境变量的配置

使用Tomcat-5.0.28版本,解压“jakarta-tomcat-5.0.28.zip”文件,到指定目录即可。当用户配置完环境变量后,就可以运行MyEclipse,在MyEclipse工具栏上点击“window”à选择“showtime”à选择“Serves”在serves里面把你的工程名称加载进去,在“Tomcat 6.x”上单击右键,选择“Run”运行即可。

Tomcat 的环境变量的配置:

右键单击“我的电脑”,然后选择“属性”,在打开的对话框中,选择“高级”选项卡,然后单击下面的“环境变量”按钮,在弹出的环境变量对话框中,看下面的“系统变量”块,单击“新建”按钮,弹出“新建系统变量”对话框,然后创建变量名为“TOMCAT_HOME”的变量,变量值为“C:\Program Files\Apache Software Foundation\Tomcat 5.0.28\”(即解压Tomcat时所选的Tomcat的根目录);然后再在系统环境变量中选择“Path”变量,单击“编辑”按钮,弹出编辑系统变量对话框,在“变量值”的后面添加“;%TOMCAT_HOME%bin”

2.4 MyEclipse6.0安装

使用Eclipse 5.0或MyEclipse6.0版本. My Eclipse 的安装:首先安装 ECLIPSE 到“F:\eclipse”路径下 ,按照默认的安装配置,点击“下一步”完成安装,之后安装 MYECLIPSE ,按照默认配置点击“下一步” ,选择“F:\eclipse” 路径,点击“下一步” ,按照默认配置点击“下一步” ,完成 MYECLIPSE 安装后打开MYECLIPSE,选择工程需要存放的路径(随意)后进入MyEclipse操作平台上.

另外,还要载入相应的jar包,如:Hibernate-lib,Jdbc-lib,Struts-lib等包。

2.5 MySQL安装 

使用mysql-5.0.19-win32版本,5.2 MySQL 的安装: 解压“mysql-5.0.19-win32.zip”,双击“Setup.exe”,开始MySQL的安装;安装过程注意事项:①MySQL的端口(默认:3306);②MySQL字符集的设置,在字符集选择时选择“utf-8”;③使用默认用户名“root”,密码可随意进行设置。

在MyEclipse中用MySQL必需要编辑它的数据库地址、端口号及用到的是哪个数据库。具体方法如下:在MyEclipse工具栏上点击“window”à选择“showtime”à选择“other”à选择“MyEclipse Database”中的“DB Browser”,在“DB Browser”中打开新的连接,填写URL: jdbc:mysql://localhost:3306/test;用户:root ;密码:自己安装时使用的密码。

完成上述操作,就可以轻松地对数据库进行的连接,测试代码,浏览JSP文件。

第3章  技术简介

从整体上讲,J2EE是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术在不断适应和出金企业级应用过程中的产物。目前,Java平台有3个版本;适用于小型设备和智能卡的Java 2 Platform Micro Edition、适用与桌面系统的J2SM和适用于企业级应用的J2EE。Sun公司推出J2EE的目的是为了消除传统Client/Servlet模式的弊病,迎合Browser/Servlet架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业级应用的开发、管理和部署。。

在Windows XP/LINUX系统上采用JSP开发。JSP是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术是在Servlet技术基础上发展起来的,它正在飞速发展中,现在已经成为Java服务器编程的重要组成部分。

3.1 Java语言

Java语言是一种面向对象的编程语言,是Sun Microsystems所开发的编程平台。Java技术基于单一Java虚拟机(JVM)的概念,JVM是编程语言与机器底层软件和硬件之间的翻译器。编程语言的所有实现都必须模拟JVM,从而使Java程序可以在具有JVM版本的任何系统上运行。

Java编程语言是与众不同的,因为Java程序需要经过编译(翻译为叫做Java字节码的中间语言)和解释(通过JVM分析和运行字节码)。编译只进行一次,而解释则在每次运行程序时都要进行。

Java语言有下面一些特点:简单、面向对象、分布性、解释型、安全性、平台无关性、可移植性、高性能、支持语言级多线程。

3.2 JavaScript语言

JavaScript是一种基于对象的脚本语言是解释执行的。JavaScript 是一种宽松类型的语言。不必显式定义变量的数据类型,实际上也无法明确地定义数据类型。在大多数情况下,将根据需要自动进行转换。

JavaScript是现在在Web上应用最为广泛的客户端脚本,它能处理相当多的任务,包括从对表单数据的确认到创建复杂的用户界面。

3.3 XML语言

XML,或称为可扩展标记语言(Extensible Markup Language),是一种可以用来创建自己标记的标记语言。它由万维网协会(W3C)创建,用来克服HTML(即超文本标记语言(Hypertext Markup Language))的局限。和HTML一样,XML也是基于SGML—标准通用标记语言(Standard Generalized Markup Language)的。尽管SGML已在出版业使用了数十年,但其理解方面的复杂性使许多本打算使用它的人望而却步。

XML提供了一种标记内容的方式,可以添加关于数据用途的信息。信息使用XML存储之后,称为解析器的应用程序就能够可靠地提取相关信息,并根据不同的需要进行处理。

XML是为Web设计的。Web服务是一种技术,允许用XML定义业务规则和过程,这样软件应用程序能够以平台独立和编程语言无关的方式进行通信。XML技术使数据可以移植,方便了消息创建,而Java技术则使代码可以移植。事实上,XML和Java语言可以很好地结合起来,成为构建和部署Web服务的完美组合。

在本项目中XML文件主要的作用是充当传输数据的载体和系统组件配置的作用。

3.4 HQL 语言

HQL(Hibernate Query Lanaguage)是面向对象的查询语言,它和SQL查询语言有些相似。在Hibernate提供的各种检索方式中,HQL是使用最广泛的一种检索方式。它具有以下功能:

⒈ 在查询语句中设定各种查询条件

⒉ 支持投影查询,即仅检索出对象的部分属性

⒊ 支持分页查询

⒋ 支持连接查询

⒌ 支持分组查询,允许使用having和group by关键字

⒍ 提供内置聚集函数,如sum()、min()和max()

⒎ 能够调用用户定义的SQL函数

⒏ 支持子查询,即嵌入式查询

⒐ 支持动态绑定参数

3.5 JSP语言

JSP(Java Server page)是由Sun Microsystems公司提倡、多家公司参与建立的一种功能强大的动态网页技术标准。JSP为创建高度动态的Web应用提供了一个独特的开发环境,能够适应市场上包括Apache Web Server、IIS4.0在内的85%的服务器产品。相对于其他网页技术,JSP具有很多优势.

客户端与服务器的交互是通过HTTP协议进行的。客户端与服务器完成一次HTTP交互需要下面4个步骤:

(1) 客户和服务器建立连接。

(2) 发送客户请求。

(3) 服务器应答。

(4) 关闭连接。

服务器端在整个交互过程中完全处于被动地位,也就是说服务器不能主动将信息发送到客户端。这里的客户端主要是指用户的浏览器,当用户在浏览器中键入要访问的网址,开始与指定的服务器建立连接,开始一次交互过程。浏览器经过一段时间等待后,从服务器得到响应,并且把相应的信息以HTML方式呈现给用户。

用户与一个JSP网站交互的过程与一个普通的网站交互的过程没有什么不同,惟一的区别在于服务器接受请求和进行应答的过程

(1) 服务器在收到一个请求后首先要分析这个请求,如果要求访问的页面是一个HTML页面、那么服务器将直接读出这个HTML页面并将这个页面传给客户端作为响应。

(2) 如果请求访问的页面是一个JSP页面,那么服务器将调用JSP引擎对这个JSP页面进行处理,将处理得到的HTML代码返回给客户端。

(3) JSP引擎在处理一个JSP页面时,如果遇到JavaBeans组件,那么JSP引擎将调用相应的JavaBeans组件,得到JavaBeans返回的值,在返回给JSP页面。

3.6 Hibernate技术

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库, Hibernate可以大大减少操作数据库的工作量。 另外Hibernate可以利用代理模式来简化载入类的过程,这将大大减少利用Hibernate QL从数据库提取数据的代码的编写量,从而节约开发时间和开发成本Hibernate可以和多种Web服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。

Hibernate技术本质上是一个提供数据库服务的中间件。Hibernate的工作原理,它是利用数据库以及其他一些配置文件如Hibernate.properties,XML Mapping等来为应用程序提供数据持久化服务的。

Hibernate具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供JDBC连接,并且自行管理事务,这种方式使用了Hibernate的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的JDBC/JTA API都被抽象了,Hibernate会替你照管所有的细节

4章  需求分析

Internet和Web快速增长的关键是互联技术的发展。越来愈多的人一起工作以及相互之间相互影响,从而达到协同作用。基于B/S体系结构的网上购物系统正是利用了这种协同的能量,使整个系统显得简单却功能强大。

客户端-服务器(C/S)应用程序是最传统的类型。一般情况下,客户端-服务器应用程序包括运行在服务器上的数据库以及运行在客户端计算机上的应用程序,大多数的处理过程都发生在客户端计算机上。但这种架构可维护性差,当应用程序出现新版本时,所有客户端计算机上的应用程序必须同时更新,以免由于版本的不兼容性导致程序出现问题。例如QQ聊天工具以及很多网游都是这种类型。C/S还有一个缺点就是客户端计算机要求功能必须相当强大,因为大部分的过程都在客户端计算机上执行。

为了解决客户端-服务器的这些缺点,浏览器-服务器(B/S)应用程序应运而生。客户端只要求安装有浏览器,就可以与服务器连接,运行整个应用程序。与此同时,应用程序的版本不管怎么更新,都只会在服务器端进行,这样客户端可以节省大量资源和时间。客户端对服务器的每次访问,服务器的最新更新通过浏览器呈现给用户。近年来B/S结构越来越得到企业级的喜爱与重用,选择B/S结构是企业的明智之举,是适应市场的需要。本文介绍的网上购物系统,正是采用这种优秀的B/S体系结构。

在目前企业级应用体系和应用数据庞大的情况下,单独用一台服务器来处理那么多的应用已经不可能,这就要求由多台机器共同提供某个特定服务。对于多层体系结构的程序而言,分布指把多层服务的处理分散到不同的机器上。这种采用分布式集群的处理方式对处理业务量极大的应用表现出非凡的性能,它们具有很大的伸缩性。由此,多层应用程序对整个系统进行了分工,使系统更易于管理和维护。在多层应用程序中,多数运行在每个用户机器上的处理过程都移到中间件层执行,并分享给所有用户,用户机器只负责把信息显示给用户并处理用户与显示器的交互,同时提供输入接口,把用户的请求反馈给服务器中间件。再由中间件处理,再次把符合用户请求的信息发送给客户端浏览器,显示给用户。这样无数次的往返,完成用户与服务器间无数次会话。

4.1 技术可行性分析

本系统采用MVC设计模式,使用符合JSP Model2的设计标准的Struts构架,在前台用在前台用JSP进行页面开发和管理用户界面,提示信息完善,界面友好,具有较强的亲和力,后台采用MYSQL数据开发和管理数据库,对数据库操作采用事务处理机制,具有强大的错误处理功能。本系统的开发环境是使用现在非常流行的开源开发工具Eclipse和Tomcat服务器。使用的灵活、以及他们当前的广泛实际应用,充分说明本系统在技术方面可行。

4.2 操作可行性分析

本系统采用的是网上管理,非常简单、易懂,不需要具有非常高的计算机专业知识,只需要管理员能够上网,就可对商城进行维护。

4.3 成本可行性分析

整个开发过程只需要一台装有上述所需求的各种软件的PC机就可以实现全部的开发任务。目前的计算机硬件市场竞争比较激烈,在价格上都出现了从没有过低廉;而所需要的各种软件,在相关产品的官方网站上都可以免费下载,而且还不断的有增加了最新功能的升级版的出现。因此,整个开发成本可以说是非常的低廉,这也为我进一步完善我的网站提供了更大的方便。

在使用成本上,用户只需要拥有一台能够连接到国际互联网上的计算机,通过注册就可以在世界的任何一个角落使用网站的全部功能和服务。而且对计算机的硬件的需求也不是很高,软件方面也没有特殊的需求,极大了方便了广大用的访问与使用。

因此,从成本可行性分析来看,这个网站体现了经济实惠,但是功能强大的特点。

5章  总体分析与设计

 5.1 系统总体结构设计

基于B/S体系结构的网上购物系统采用Struts、JSP、Servlet等J2EE企业级应用开发技术,使用HIBERNATE技术实现与Mysql数据库的交互。

下面图5-1给我们展示了这个网上购物系统的完整框架结构。

图5-1 总体流程图

5.2系统各层的设计实现

Tomcat5.5环境下,每一个系统作为一个文件夹,放在webapps目录下,称为一个应用。这个应用只有放在webapps目录下,当Tomcat服务器启动后,方可被用户(本地及远程)用浏览器访问到。

在本文的基于B/S体系结构的网上购书系统中,它的MVC各层放置在Tomcat应用下的文件夹结构中。其中Model层和Controller层放在WEB-INF/classes/的子目录下;View层则放在该应用下,但不可放进WEB-INF下,否则客户端访问不到,因为WEB-INF下的文件是对外隐藏封装的。

5.2.1 MVC 模式概述

  1. MVC是一种架构模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC的应用程序被分为三个核心部件:模型(Model)、视图(View)和控制器(Controller)。
  2. 模型表示企业数据和业务规则。
  3. 视图是用户看到并与之交互的界面。
  4. 控制器接受用户的输入并调用模型和视图去完成用户的需求。
  5. MVC最重要的一个优点是:多个视图能共享一个模型。由于已经将数据和业务规则从表示层分开,所以可以最大化的重用代码。
  6. MVC的缺点:要花掉相当可观的时间去考虑如何将MVC运用到你的应用程序,增加了系统的复杂性。,将此地址的页面显示在浏览器上。

5.2.1.1  Model层

Model(模型)层包括业务处理和数据库连接接口。这个Model层利用了JavaBean、HIBERNATE技术以及DAO设计模式。

JavaBean技术将整个购物系统涉及到的对象封装成类,体现了Java语言的面向对象特点。系统中封装对象有:

Product(商品类),属性有id(商品ID号),同样由数据库自动产生,用来标志商品;name(商品名称);description(商品描述),对商品的外型、功能等的文字描述;price(商品价格),指商品的单价。

Order(订单类),属性有id(订单号),同样由数据库自动产生,用来标志订单;items(订单条目),这个属性是一个集合,用来存放属于这个订单的所有商品信息,每条商品信息称为一个订单条目;user(用户),用来指定此订单属于的用户,这个属性用来存放一个用户对象,理所当然,也就相当于存放了那个用户的所有个人信息;status(订单状态),订单状态为订单设置了受理状态,由企业查看订单是处于未处理状态还是发货状态,以作出对订单相应管理;cost(订单总费用),指这个订单需要支付的费用,是这个订单所有订单条目费用的总和。

Item(订单条目类),属性有id(条目ID号),同样由数据库自动产生,用来标志订单条目;product(商品),这个属性是一个集合,用来存放一个商品对象,以及这个商品的所有信息;number(商品数量),商品数量指product属性所指的那样商品的购买数量;cost(条目费用),用来保存这个商品所花费的费用,有商品单价和商品数量决定。

Cart(购物车类),属性有items(订单条目),这个属性是一个集合,用来存放一个用户一次购物活动中有意购买购买的所有商品订单条目;cost(总费用),显示了整个购物车里所有商品需要花费的价格。

业务接口灵活地运用到DAO设计思想,采用接口编程。接口编程的原理是,一个接口里定义了多个方法,这些方法是没有实现的抽象方法,是个标准。接口可以有多个实现类来实现它的所有方法,每个实现类可以有各不相同的自己的实现方法,这些方法有着与接口相应被继承方法的方法名相同的名称,但各自实现的功能却各异。打个比方,接口就好比一个三孔插座,实现它的多个实现类就好比能发出各种不同颜色灯光的三孔灯泡,这三孔就是它们的方法,插座的“方法”没有实现功能,即什么也不能干,灯泡的“方法”和插座一样同是三孔(方法名相同),但它们有各自的功能,即能发出各自颜色不同的灯光。这样的设计,其他程序调用该方法时,可以使用接口来调用,但方法的具体实现却是根据情况调用相应的实现类,大大拓展系统的扩展性和降低了程序间的耦合性。

一个接口,多个实现类。当企业需要扩展功能时,可以直接在接口中添加相应的抽象方法,再在实现类中实现该方法。这种对系统的扩展易于实现,程序的修改对其它程序的影响很小,几乎为零。不像光用类来写的程序,程序间的耦合性太大,当一个类中某个方法发生变化,调用到这个方法的程序就得作出相应得修改,这样工作量的复杂、烦琐及巨大可想而知。

数据库连接应用了Hibernate技术,数据库连接程序单独作为一个工具类,负责获得数据库连接对象、关闭数据库连接,释放数据库资源的操作,为需要用到数据库连接的程序所准备。Hibernate技术利用反射原理获得数据库连接对象Session,需要数据库驱动、URL、登录用户名、密码并且配置局部环境变量和全局环境变量。Hibernate具有很强的平台性,不管是Mysql、MySQL还是SQLServer,都能用Hibernate技术进行数据转换,使得Web服务器应用程序跨数据库平台丝毫不受影响。

在业务接口中,凡是需要往数据库存放数据、从数据库提取数据的方法,都会向数据库连接工具类借用数据库连接方法。获得一个数据库连接对象Session后,Session创建一个Preparedment对象,这个对象能够执行数据库操作语言SQL,对数据库进行增、删、查、改的操作。如果操作有返回值,这些返回值会交给ResultSet对象来管理,这个对象能够将数据库的返回结果的数据类型转成JavaBean对象的数据类型,进而将这些数据封装成JavaBean的对象,利于以后的程序使用。

5.2.1.2 View层

购书系统的View层主要把Controller层的处理结果显示在客户端的浏览器上。这层用到了JSP、HTML,还用到了少许JavaScript技术。

JSP(Java Server Pages)为Web开发提供了一个框架,使用这个框架可以在服务器上使用HTML、XML和Java代码,建立安全、快速和独立于服务平台的动态内容。JSP是服务器端的脚本语言,是以Java和Servlet为基础开发而成的动态页面生成技术,它的底层实现是Java Servlet。JSP编写的网页,可以当作Servlet运行,是种看似静态页面的写法,却能显示动态功能。在Tomcat服务器容器中,凡是JSP页面,在一个应用被客户端浏览器第一次访问时,Tomcat都会先自动把JSP页面生成Servlet程序,存放在Tomcat一个子目录下,然后才发送给客户端显示在浏览器上。以后的用户再对此应用进行访问时,使用的是现成的Servlet程序。这种页面,不像Servlet必须在Tomcat中部署,而能直接被访问。

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

JSP的特点:面向对象,跨平台,和Servlet一样稳定,可以使用Servlet提供的API,克服了Servlet的缺点。一般和JavaBeans结合使用,从而将界面表现和业务逻辑分离。

5.2.1.3 Controller层

Servlet是一种扩展Web服务器功能的技术,而且由于它是用Java编写的,所以能够访问整个JavaAPI库,包括用于访问企业数据库的HIBERNATE API。Servlets用特定的Java解决方案替代了其它的Web服务器方编辑模式(如:CGI,ISAPI等),因而继承了Java的所有特性(跨平台、多线程、OO)。用来编写Servlets的Servlets API对于服务器环境和协议没有任何特殊的要求,所以Servlets具有很强的可移植性,也不象利用CGI程序等其他方式那样具有性能局限。Servlets业同样使用HTTP协议与客户端进行通信,Servlets最常用的子集是“Http Servlets”。Java Servlets不是用户调用的应用程序,而是由实施该Servlet的Web应用程序中的Web容器根据客户端的HTTP请求来调用。当一个Servlet被调用时,Web容器通过接收Servlet的请求与Web服务器交互,并且把响应信息发送到Web服务器。

Struts的基础原理来源于Servlet,在Servlet的基础上架起一个框架,让系统层次更分明。Struts一般以Action类来处理Web数据接收和传输,这个类的方法execute除了Servlet的HttpServlet那两个参数,仍然功能相同外,还新增了两个:ActionMapping、ActionForm。ActionMapping用来转发到另一个View页面,转发的方向和规则由配置文件来决定;ActionForm用来处理客户端浏览器那端表单数据的处理,这个类很方便地提取到那端地表单数据,而不需要HttpServletRequest来获得,不过前提还需要表单中涉及到地JavaBean对象由相应地ActionForm类,且ActionForm里的属性和方法和JavaBean相同。在Action类中,可以调用业务处理方法来对接收到的数据进行加工,作为请求中的参数值向另一个页面发送。

Servlet的子集HttpServlet里doGet或者doPost方法的参数HttpServletResponse可以获得一个输出流PrintWriter,负责将服务器的响应发送给客户端。发送的形式一定要符合HTML规范,发送的内容整体形成一个完整的HTML网页,这个网页才能有效的在客户端浏览器上显示给用户;而方法的另一个参数HttpServletRequest则负责获得客户端传送过来的包含在请求中的数据,服务器能够在Servlet程序中接收到客户的请求并作出相应处理,同时向客户端及时输出相应响应。

图5-2 应用框架

5.3 数据库的设计

5.3.1 系统实体关系图

                          图5-3 实体类E-R图

一、一对一关系:

1、外键关联

应用场合:主要应用在有一对一对应关系,但是关联关系比较弱的两个对象之间(本质上是一个一对多的双向关联,只是在多的一方用unique限制)。

2、共享主键

应用场合:用在两个有一对一关系,并且关联关联关系较强的两个对象之间。例如:一个汽车只有一个发动机(汽车没有了,发动机也就没有存在的必要了)。

使用注意:

(1) 对于作为外键同时是主键的那个影射文件,它的ID的生成方式必须是foreign.

(2)  constrained(约束) 表明该类对应的表对应的数据库表,和被关联的对象所对应的数据库表之间,通过一个外键引用对主键进行约束。这个选项影响save()和delete()在级联执行时的先后顺序,到了hibernate 3.0之后是可选的,可写可不写。

(3)延迟加载:想要在one to one 关系中实现延迟加载。仅有lazy=”true”是不够的,还需要加上constrainted=“true”;才能实现。

二、一对多关系

应用场合:一个类中的某个属性,是另外一个类的集合。

使用注意:在一对多的双向关联关系中,关系的维护都应该由多的一方维护,所以在一哪方把inverse 属性设为true.在数据库操作的时候,可以执行较少的语句,从而能够提高效率。否则在有外键的一方总是先插入一条语句,然后再执行Update()操作,才能完成真正的插入。

三、多对多关系

使用规则:在多对多关系关系中,都是双向关联,那么双方关系的维护放在任何一方都可以。

5.3.2 数据库表

整个购物系统能运行离不开数据库的支持,数据库在整个系统的最底部发挥着不可忽视的作用。没有了数据库的支撑,系统无法运行。由此可见,系统离不开数据库,在系统之前首先必须保证数据库的准备工作已经完成。本系统采用的是Mysql数据库,使用Hibernate技术实现与Mysql数据库的交互。数据库的准备工作需要四个表来保存整个系统的重要信息,它们分别是:

用户表,用来存储所有会员用户的信息,能够根据这个表管理所有用户;

图5-4 用户E-R图

表5 -1  用户表

字段名称

数据类型

约束条件

备注

uid

Integer

Primary Key

惟一标识

name

Varchar2(32)

Not NULL,Unique

真实姓名

password

Varchar2(32)

Not NULL

登录密码

address

Varchar2(512)

没有约束

家庭住址

postcode

Varchar2(10)

没有约束

邮政编码

email

Varchar2(32)

没有约束

电子邮箱

telephone

Varchar2(32)

没有约束

联系电话

商品表,用来存储购物系统的所有商品的信息,能够根据这个表来管理所有的商品息;

图5-5 产品E-R图

表5 -2  产品表

字段名称

数据类型

约束条件

备注

pid

Integer

Primary Key

商品编号

name

Varchar2(32)

Not NULL

商品名称

description

Varchar2(64)

没有约束

商品描述

price

Number(8,2)

Not NULL

商品单价

订单条目表,用来存储订单条目的信息;

图5-6 订单条目E-R图

表5 -3  订单条目表

字段名称

数据类型

约束条件

备注

iid

integer

Primary Key

订单条目号

amount

Integer

没有约束

购买数量

product_id

Integer

Not NULL

商品编号

order_id

Integer

Not NULL

订单号

订单表,用来存储这个企业接收到的所有客户订单,企业由这个订单表来管理客户订单。

图5-7 订单E-R图

表5 -4 订单表

字段名称

数据类型

约束条件

备注

oid

Integer

Primary Key

订单号

user_id

Integer

Not NULL

用户id

cost

number(10,2)

没有约束

商品总价

5.4 模块的详细设计

5.4.1产品模块的主要功能  

对于产品管理模块主要的作用是:当用户浏览网页时能够看到当前数据库中所存的所有商品,可以任意选购产品列表中的书籍,并且可以查看书籍的详细描述。如果用户想要购买商品,必须得拥有一个账号,而且是要经过数据库验证的,也就是说用户当前状态为“登录”。如没有账号,可以根据注册功能进行新的账号的申请。当用户登录后,就可以在产品页面选购。

5.4.2 页面的建立

首先,建立 HTML文件,根据HTML语言的功能,把浏览产品的页面写出来,HTML文件生成的是静态的页面,只能显示出最清晰原始页面。然后,再根据JSP语言的功能,对HTML文件进行改变,把所有产品的那部分代码转变换成JSP动态代码,再把查看购物车的按钮设置成超链接形式。这样一个简单的动态页面就完成了。

5.4.3 实体类的建立

1、Product 类

把Product类的属性进行封装,写出产品地址(ID)、产品名称(ProductName)、产品描述(Desc)、产品价格(Price)的set()和get()方法,还要写出有参构造器,其中包括产品名称、产品的描述和产品价格。还应构造一个无参的构造器。

实体类要写出对应的product.hbn.xml配置文件。配置文件中,类名要与表名对应,属性名对就字段名,ID采用自动生成策略<generator class=“native”></generator>,自动生成ID.产品类和条目类的对应关系是一对多的关系。

2、Cart 类

首先Cart类要实现Serializable (序列化),再写出需要的属性,及相对应的set()和get()方法,有参构造器和无参的构造器也要构建出来。在购买产品时,要把自己所选中的产品放到购物车里面,然后就可以结账。所以对产品的增加、删除、修改、清空也应该是在购物车中进行处理的。因此,在Cart类里面还要写入相应的增加、删除、修改、清空的方法。

5.4.4 自定义控制器类Action

1、ProductAction类

ProductAction类要继承于Action,在继承Action时要重写execute方法,创建一个对象,用对象来调用selectAllProduct(),并把它存放到Map集合中。然后把集合Map中的key值、Value值存倒Set集合中去,再利用Set集合类中的Iterator(迭代器接口)中的hasNext()和next()方法,来实现productr 遍历。

2、CartAction 类

    在CartAction中的modifyNumber()方法,在该方法中,根据请求中页面表单中的显示产品数量所对应的参数值(表单中该参数的名称可高为商品id值)来修改购物车中商品条目的数量值。deleteSelectedItem()方法从请求中获取要删除的定单条目(该参数对应表单中的复选框,其名称可设为items,各复选框值可设为各个条目所对应的商品id) 并将其从购物车中删除。clearCart()方法负责清空购物车中的所有商品。在operateOrder()方法中,如果用户已经登录则转到定单显示页面,若用户尚未登录则转到登录页面

3、Action 的组件映射图:

1商品列表流程:

图5-8 商品列表流程

2添加商品条目到购物车流程:

图5-9 添加商品条目到购物车流程

6章  软件测试

    从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷;从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求。测试是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节。

6.1 软件测试的目的和方法

测试的正目的是“为了发现程序中的错误”。这和某些人通常想象的“测试是为了表明程序是正确的”,“成功的测试是没有发现错误的测试”等等是完全相反的。正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试地,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

    黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身有问题或规格说明的规定有误,用墨盒测试方法是发现不了的。黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误。功能不正确或遗漏; 界面错误; 数据库访问错误; 性能错误; 初始化和终止错误等。从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有佥的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。

等价类划分的办法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒测试用例设计方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值