网上购物系统的设计与实现 论文 - 图文

更新时间:2024-01-21 05:57:01 阅读量: 教育文库 文档下载

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

高等教育自学考试 计算机信息管理专业(本科)

网上购物系统的设计与实现

专业:计算机信息管理(本科)

姓名: 杨棕焱 完成日期: 二〇一四年八月

学校: 山东大学

郑 重 声 明

本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。

本人签名: 日期:

摘要

随着科技的飞速发展,计算机技术已在社会的各个领域得到广泛应用。随着计算机技术和通信技术的迅速发展,网络的规模也逐渐扩大,网络的元素也随之不断增加,有的利用其通信,有的利用其商业用途,在网络上进行出售、购买、宣传等操作,从而使得网络越来越成为现今社会上必不可少的元素,而网站就是这个网络里很庞大的元素。

通过电子商城这个平台,可以使用户足不出户就可以了解丰富的商品信息,极大的方便了用户,系统的主要功能包括:商品类别管理、商品信息管理、订单管理、会员管理、系统公告管理等。分为管理员用户、会员用户这二种用户平台。

本系统前台主要使用JSP作为开发语言,后台使用MYSQL作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat,开发出的一个基于Web技术的B/S结构的商城购物系统。

关键词:电子商城;JSP;B/S结构

ABSTRACT

With the rapid development of science and technology, the computer technology has been applied to each field of the society. Along with the computer technology and the rapid development of communication technology, the scale of network is gradually increasing, network element also increases ceaselessly subsequently, some use their communication, using some of its commercial purposes, in the network for sale, purchase, publicity and other operations, so that the network has more and more become nowadays essential elements, while the website is very large in the network elements。

Through the electrical mall this platform, users can remain within doors can understand the wealth of information goods, a great convenience to users, the main functions of the system include: commodity category management, merchandise management, order management, member management, bulletin management system. As administrator, members of the user to the two user platform。

The front of the system using JSP as a development language, the use of Sql2005 as database management system, the development environment is MyEclipse, server using tomcat, developed a Web technology based on B/S structure mall shopping system。

Keywords: Sales network;JSP;B / S structure

目 录

1 绪论 ......................................................... 1

1.1课题背景 .............................................................. 1 1.2目的和意义 ............................................................ 1 1.3开发工具及技术 ........................................................ 1 1.3.1开发工具 ............................................................. 1 1.3.2 JSP ................................................................. 2 1.3.3 JavaScript .......................................................... 4 1.3.4 Struts 2简介 ........................................................ 4 1.3.5 Hibernate简介 ....................................................... 5 1.4软硬件需求 ............................................................ 5

2 需求分析 ..................................................... 6

2.1可行性分析 ............................................................ 6 2.1.1技术可行性 ........................................................... 6 2.1.2经济可行性 ........................................................... 6 2.1.3操作可行性 ........................................................... 6 2.1.4法律可行性 ........................................................... 6 2.2系统用户用例图 ........................................................ 7 2.2.1普通用户用例图 ....................................................... 7 2.2.2管理员用例图 ......................................................... 7 2.3功能模块需求分析 ...................................................... 7 2.4设计的基本思想 ........................................................ 9 2.5性能需求 .............................................................. 9 2.5.1系统的安全性 ......................................................... 9 2.5.2数据的完整性 ........................................................ 10 2.6界面需求 ............................................................. 10

3 系统分析与设计 .............................................. 12

3.1数据库的分析与设计 ................................................... 12 3.1.1数据库的概念结构设计 ............................................... 12 3.1.2数据库的逻辑结构设计 ................................................ 15

3.1.3数据库的连接原理 .................................................... 17 3.2中文乱码问题处理 ..................................................... 18

4 系统功能实现 ................................................ 21

4.1管理员登陆页面 ....................................................... 21 4.2管理员模块 ........................................................... 23 4.2.1商品类别管理 ........................................................ 23 4.2.2商品信息管理 ........................................................ 27 4.2.3会员信息管理 ........................................................ 30 4.2.4订单管理 ............................................................ 32 4.2.5系统公告管理 ........................................................ 35 4.2.6修改个人密码 ........................................................ 35 4.2.7安全退出系统 ........................................................ 35 4.3普通用户模块 ......................................................... 36 4.3.1系统主页面实现 ...................................................... 36 4.3.2商品信息查询 ........................................................ 36 4.3.3用户注册 ............................................................ 37 4.3.4用户购物 ............................................................ 39 4.3.5购物车管理 .......................................................... 40 4.3.6网站公告 ............................................................ 42

5 系统测试 .................................................... 43

5.1系统测试目的与意义 ................................................... 43 5.2测试过程 ............................................................. 43 5.2.1主页面的登录模块测试 ................................................ 43 5.3其他错误 ............................................................. 44

结 论 ........................................................ 45 参考文献 ...................................................... 46 致 谢 ........................................................ 48

1 绪论

1.1 课题背景

互联网的兴起从本质上改变了整个社会的商品交易方式,国内各大企业从上个世纪90年代互联网兴起之时,就产生了通过网络进行销售经营商品的想法。但是由于在互联网上企业的信誉难以认证、网络的法规政策不健全、物流不发达等一系列的原因,限制了网上交易发展的步伐。进入21世纪以后,随着整个社会的发展、进步,制约网上交易的各个瓶颈问题逐一被击破,各企业也纷纷的加入到电子商务的洪潮之中。

中国互联网协会网络营销工作委员会调查显示,随着国内产业环境和消费市场的成熟,网络购物将在今年实现更大发展。

根据会员企业艾瑞咨询集团的统计,自2008年以来我国网络购物交易同比增长125.1%,交易总量达1263亿,形成了中国网络购物的快速增长浪潮,网络购物这一消费方式给人们生活带来的变化,除了购物场所的改变以外,更重要的是大大改变了传统的消费行为习惯,无论是否在网上购物,上网查看产品的相关信息,已经成为购物决策环节的重要组成部分,这一环节对购物行为的实际发生起到了至关重要的指导作用。

1.2 目的和意义

与传统方式销售相比在线销售有很多的优点如: (1)检索便捷

在线销售提供了多种检索途径,可以从分类、新品、特价等途径进行检索,快捷准确。

(2)信息量大

与传统销售方式相比,在线销售能够提供海量产品信息。 (3)成本低,风险小,无地域限制

网络销售最突出的优点是:不再限制消费者的购买时段,扩大和巩固了客户群,从而增加了企业的核心竞争力,节省实际开店时需要投入的成本和租用费用。

1.3开发工具与技术

1

1.3.1 开发工具

此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和MYSQL数据库进行简要介绍。

(1)MyEclipse

MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。

(2)Tomcat

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

(3)MYSQL

mysql使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。支持多线程,充分利用CPU资源。优化的SQL查询算法,有效地提高查询速度。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。提供用于管理、检查、优化数据库操作的管理工具。支持大型的数据库。可以处理拥有上千万条记录的大型数据库。支持多种存储引擎。对于一般的个人使用者和中小型企业来说,mysql提供的功能已经绰绰有余,而且由于mysql是开放源码软件,因此可以大大降低总体拥有成本。

2

1.3.2 Jsp

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。 (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下

(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身;

3

exception 针对错误网页,未捕捉的例外。 1.3.3 JavaScript

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javascript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。

1.3.4 Struts 2简介

Struts最早是作为Apache Jakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages、Servlet、标签库以及面向对象的技术水准。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。

使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2002年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。而Struts2则是Struts的升级版本。

它的优点在于:

(1)Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可 以很好的掌控开发的过程; (2)使用OGNL进行参数传递; (3)强大的拦截器; (4)易于测试;

(5)易于扩展的插件机制;

4

(6)全局结果与声明式异常。 1.3.5 Hibernate简介

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Hibernate的核心接口一共有2个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这2个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

1.4 软硬件需求

硬件需求:

CPU:Pentium以上计算机 内存: 512M以上 软件需求:

操作系统版本:Windows XP /vista/Win7 开发工具:MyEclipse 6.0.1 后台服务器:Apache Tomcat 6.0 开发语言:JSP 浏览器:IE6.0

5

2 需求分析

2.1 可行性分析

开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之前,都要进行可行性分析,可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍。 2.1.1 技术可行性

本系统开发工具是MyEclipse和mysql数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四 期间也系统的了解了J2EE的知识,本系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。 2.1.2 经济可行性

本系统所用的软件都是开源的,为开发软件节省了大量的金钱和时间,达到降低成本,提高开发效率的目的,本系统对计算机配置的要求不高,甚至网吧更换下来的低配置电脑都可以完全满足需要,所以在经济上具有完全的可行性。 2.1.3 操作可行性

本系统操作简单,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需对WINDOWS操作熟练,加之对本系统的操作稍加培训即可工作,而且本系统可视性非常好,所以在技术上不会有很大难度。 2.1.4 法律可行性

本商城购物系统是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。

6

综上所述,开发一个商城购物系统系统具有速度快,操作更准确,节省开支等有利之处,因此,建立一个商城购物系统是必要可行的。

2.2 系统用户用例图

2.2.1 普通用户用例图

出于安全性的考虑,普通用户只有浏览商品和商品查询、商品购买等功能,其他的删除修改功能都没有设计,因为普通用户最主要关心的就是商品信息的更新和查询等功能,普通用户用例图如图2.1所示:

普通用户 系统公告 购物车管理 浏览商品 网站首页 在线下单 图2.1 普通用户用例图

2.2.2 管理员用例图

管理员是系统的核心用户,涉及到七大功能模块,管理员对系统的所有信息有着操作的权限,能够及时动态的更新系统的各项信息。

系统管理 管理员 订单管理 登录系统 修改密码 商品类别管理 商品信息更新 会员管理 系统公告管理 7

图2.2 管理员用例图

2.3 功能模块需求分析

本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:

(1)系统具有简洁大方的页面,使用简便,友好的错误操作提示。

(2)管理员用户具有商品类别管理、商品信息管理、商品信息更新管理、订单管理、会员信息管理、公告管理、系统管理功能。

(3)普通用户用户具有浏览商品、商品查询、购买商品、修改个人信息等功能。 (4)具有较强的安全性,避免用户的恶意操作。 系统的功能结构图,分普通用户平台,管理员平台。

普通用户功能模块图说明:普通用户可以在线浏览商品,查询商品,浏览公告信息,如果要购买、下订单操作,首先需要注册一个个人账号,然后登陆到系统中,如功能图2.3所示:

商品信息浏览系统公告查看个人信息维护普通用户模块 在线下订单在线注册 管理员功能模块图说明:管理员是功能最多的一种用户角色。

(1)商品类别信息管理模块:在该模块中完成对商品类别信息的管理,包括类别录入、查询、修改、增加和删除等功能操作。其中类别信息包括类别名称、类别介绍等信息。

(2)商品信息管理模块:在该模块中定义了商品信息的管理,其功能包括商品录入、查询、删除等操作。

(3)会员管理模块:该模块中包括浏览会员信息和删除会员信息2个功能。

8

图2.3 普通用户用户功能模块图

管理员用户功能模块图如图2.4。

管理员用户模块

修改个人密码商品类别管理商品类别管理会员信息管理网站公告管理订单信息管理2.4 设计的基本思想

设计思想遵循以下几点:

(1)采用B/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页搜索方式的用户。

(2)采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。

(3)采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。

(4)简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。

(5)速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程中,具体过程尽量做到资源占用少,速度快。

(6)设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。

2.5 性能需求

9

图2.4 管理员用户功能模块

2.5.1 系统的安全性

本购物系统在管理权限上要严格进行控制,具体要求如下:

(1)要想管理本系统的商品信息,必须先要凭用户名和密码登陆到系统中,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。

(2)在具体实现中设定不同权限,不同权限用户登录到系统后,不能越级操作,管理员可以使用所有模块;普通用户只能在线浏览信息,比如,查询商品信息、在线购买、下订单等功能。 2.5.2 数据的完整性

(1)各种记录信息的完整性,信息记录内容不能为空。 (2)各种数据间相互联系的正确性。 (3)相同数据在不同记录中的一致性。

2.6 界面需求

界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。

(1)输出设计

输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。

系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。

(2)输入设计

输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输

10

入数据的正确性对于整个系统质量的好坏是具有决定性意义的。

输入设计的原则有如下几点:

① 输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。

② 输入的准备及输入过程应尽量容易进行,从而减少错误的发生。 ③ 应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。

④ 输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误。

11

3 系统分析与设计

3.1数据库的分析与设计

计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。

数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。

3.1.1数据库的概念结构设计

概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。

概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的。

根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。如图3.1:

12

实体 属性 图3.1 E-R图

实体间关系

(1)普通用户实体E-R图如图3.2所示:

普通用户 用户名 密码 姓名 性别 年龄 联系方式 图3.2 普通用户E-R图

(2)商品类别实体E-R图

类别介绍

图3.3 商品类别信息实体E-R图

(3)商品信息E-R图

商品介绍 商品图片 商品类别 类别名称 是否删除 商品价格 商品名称 类别ID 商品编号 商品信息 图3.4 商品信息实体E-R图

13

(4)系统公告信息E-R图

公告内容 公告时间 公告标题 公告信息 图3.5 系统公告信息实体E-R图

(5)管理员信息E-R图

图3.6 管理员信息实体E-R图

(6)订单信息E-R图

登陆账号 登陆密码 用户ID 管理员 送货地下单时间付款方式总金额 订单编号 会员ID 订单信息 14

图3.7 订单信息实体E-R图

3.1.2 数据库的逻辑结构设计

我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:

每一个实体要转换成一个关系; 所有的主键必须定义非空(NOT NULL);

对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。(1)普通用户表主要是记录了普通用户基本信息。表结构如表3.1所示。

表3.1 普通用户表(t_user)

列名 user_id user_name user_pw user_realname user_sex user_tel user_address 数据类型 int varchar varchar varchar varchar varchar varchar 长度 4 50 50 50 50 20 20 允许空 否 否 否 否 否 否 否 是否主键 是 否 否 否 否 否 否 说明 用户ID 用户名 用户密码 姓名 性别 联系方式 住址 (2)商品类别信息表主要是记录了商品类别的基本信息,表结构如表3.2所示。

表3.2 商品类别信息表(t_catelog)

列名 catelog_id catelog_name catelog_miaoshu 数据类型 Int Varchar Varchar 长度 4 50 50 允许空 否 否 否 是否主键 是 否 否 说明 类别ID 类别名称 类别介绍 (3)商品信息表主要是商品的相关信息,其中ID是主键,表结构如表3.3所示。

15

表3.3 商品信息表(t_goods)

列名 goods_id catelog_id goods_name goods_miaoshu goods_pic shichangjia 数据类型 Int Int varchar varchar varchar Date 长度 4 4 50 50 50 50 允许空 否 否 否 否 否 否 是否主键 是 否 否 否 否 否 说明 商品ID 类别ID 名称 介绍 商品封皮 商品价格 (4)管理员信息表主要记录了管理员的账号信息,包括用户名和密码,表结构如表3.4所示。

表3.4 管理员信息表(t_admin)

列名 userId userName userPw 数据类型 int varchar varchar 长度 4 50 50 允许空 否 否 否 是否主键 是 否 否 说明 编号 用户名 密码 (5)订单信息表主要记录的会员的订单的信息,包括订单编号、下单时间等,表结构如表3.5所示。

表3.5 订单信息表(t_order)

列名 order_id order_date order_zhuangtai songhuodizhi fukuanfangshi jine user_id 数据类型 Int Varchar Varchar Varchar Varchar Varchar Int 长度 4 50 50 50 50 50 4 允许空 否 否 否 否 否 否 否 16 是否主键 是 否 否 否 否 否 否 说明 编号 下单时间 订单状态 送货地址 付款方式 总金额 会员ID (6)公告信息表主要记录了管理员发布公告的信息,包括公告标题、公告内容等,表结构如表3.6所示。

表3.6 公告信息表(t_gonggao)

列名 id title content shijian 数据类型 int varchar varchar varchar 长度 4 50 50 50 允许空 否 否 否 否 是否主键 是 否 否 否 说明 编号 公告标题 公告内容 公告时间 3.1.3 数据库的连接原理

采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。其思想如图3.8所示:

BusinessObject 使用 DataAccessObject 封装 DataSource

获取/修改 DataTransferObject 创建/使用

图3.8 DAO模式类图

图3.8中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数据传输对象,在应用程序不同层次之间传输对象,在一个分布式应用程序中,通常可以提高整理的性能;DataAccesObject数据输入/输出

17

对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据逻辑,编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下: public DBContent(){

String CLASSFORNAME=\com.microsoft.jdbc.sqlserver.SQLServerDriver\//连接数据库的驱动

String url=\

jdbc:microsoft:sqlserver://localhost:1433;databaseName=db_wlgw \

String user=\连接数据库的用户名 String password=\连接数据库的密码 try{

Class.forName(CLASSFORNAME);

con= DriverManager.getConnection(url,user,password);//加载数据库的

驱动

stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.

CONCUR_UPDATABLE);

}

catch(Exception ex){ } }

ex.printStackTrace();

在程序需要连接数据库的地方,只需要生成一个DBConnet的对象,就可以对数据库进行连接并操作。

3.2 中文乱码问题处理

在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。

在web.xml中配置:

18

SetCharacterEncodingFilter

myweb.util.filter.SetCharacterEncodingFilter

encoding gb2312

SetCharacterEncodingFilter

/*//*表示工程下所有的页面都会有此过滤器的处理

对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

this.encoding = filterConfig.getInitParameter(\ String value = filterConfig.getInitParameter(\ }

在工具包util包中同样定义了DataFormate类来处理字符转换: public static String toUni(String gbStr){

String uniStr = \把字符串转换成uincode编码*/ if(gbStr == null){ gbStr = \ } try{

byte[] tempByte = gbStr.getBytes(\ uniStr = new String(tempByte,\ }catch(Exception ex){

19

}

return uniStr; }

/* 把字符串转换成UtF-8编码*/

public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { byte[] b; try {

b = Character.toString(c).getBytes(\ }catch (Exception ex) { System.out.println(ex); b = new byte[0]; }

for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) { k += 256; }

sb.append(\ toUpperCase()); } }

return sb.toString(); }

20

4 系统功能实现

在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。

4.1 管理员登陆页面

(1)描述:为了保证系统的安全性,要使用本系统必须先登陆到系统中。管理员登录采用AJAX方式进行验证,先是在前台获取输入的管理中登录账号、密码,点击登录后,通过AJAX方式,后台异步进行验证,实现页面无刷新的管理员登录。

(2)程序运行效果图如图4.1所示:

图4.1 管理员登陆页面设计

(3)在登陆页面输入用户名和密码以后,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码进行判断,如果正确提示“通过验证”,进入到管理界面,如果错误则提示“用户名和密码不正确”,页面调转到登陆页。

loginservice关键代码:

public String login(String userName,String userPw,int userType)

{

try {

21

Thread.sleep(700);

} catch (InterruptedException e) { }

String result=\

if(userType==0)//系统管理员登陆 {

String sql=\Object[] con={userName,userPw}; List

// TODO Auto-generated catch block e.printStackTrace();

adminList=adminDAO.getHibernateTemplate().find(sql,con);

if(adminList.size()==0) { } else {

WebContext ctx = WebContextFactory.get(); HttpSession session=ctx.getSession(); TAdmin admin=(TAdmin)adminList.get(0); session.setAttribute(\ result=\

session.setAttribute(\ result=\

}

if(userType==2) { }

22

}

}

return result;

4.2 管理员模块

(1)描述:管理员主页面:左方页面展示了管理员可操作的七大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。

(2)程序运行效果图如图4.2所示:

图4.2 管理员主页面

在每个jsp页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面: if(session.getAttribute(\{

out.print(\请先登录!

');window.open('../index.jsp','_self')\ }

4.2.1 商品类别管理

(1)类别信息录入

① 描述:管理员输入类别相关正确信息后点击录入按钮,如果是没有输入完整的普通用户信息,比如没有输入类别名称,都会给出相应的错误提示,不能

23

录入成功。输入数据都通过form表单中定义的方法onsubmit=\checkForm()\来检查,checkForm()函数中是各种的校验输入数据的方式。

② 程序效果图如下图4.3所示:

图4.3 类别信息录入

③ 流程图如下图4.4所示:

系统验证录入普通用户信息 未通过 管理员录入商品类别信息 登陆系统

通过

结 束 录入成功 图4.4 商品类别信息录入流程图

(2)类别信息管理

① 描述:管理员点击左侧的菜单“商品类别管理”,页面跳转到类别管理界面,调用后台的action类查询所有商品类别信息。

② 程序效果图如下图4.5所示

24

图4.5 商品类别管理

类别管理关键代码:

public String catelogMana() {

String sql=\

List cateLogList=catelogDAO.getHibernateTemplate().find(sql); Map

request=(Map)ServletActionContext.getContext().get(\

}

public String catelogAll() {

String sql=\

List cateLogList=catelogDAO.getHibernateTemplate().find(sql); Map

request.put(\return ActionSupport.SUCCESS;

request=(Map)ServletActionContext.getContext().get(\

}

request.put(\return ActionSupport.SUCCESS;

public String catelogAdd() {

TCatelog catelog=new TCatelog(); catelog.setCatelogName(catelogName); catelog.setCatelogDel(\

25

}

catelogDAO.save(catelog); this.setMessage(\操作成功\this.setPath(\return \

public String catelogDel() {

String sql=\

goodsCatelogId=\ }

(3)类别信息删除

① 描述:先是点击类别信息管理,页面跳转到类别管理界面,浏览所有的类别信息,点击要删除的类别,弹出的确定对话框,即可删除该类别信息。

② 程序效果图如下图4.6所示

26

List goodsList=goodsDAO.getHibernateTemplate().find(sql); if(goodsList.size()>0) { } else { }

return \

TCatelog catelog=catelogDAO.findById(catelogId); catelog.setCatelogDel(\catelogDAO.attachDirty(catelog); this.setMessage(\操作成功\this.setPath(\this.setMessage(\请先删除此类别下的商品\this.setPath(\

图4.6 类别信息删除

4.2.2 商品信息管理

(1)商品信息录入

① 描述:在此页面主要是输入商品信息,包括商品编号、名称、商品介绍、商品品牌、商品图片、商品价格等,其中商品介绍这个地方,使用的是开源的在线文本编辑器fckEditor这个富文本框实现。是否为空也是通过form表单中的onsubmit=\来检查。

② 程序效果图如图4.7所示:

图4.7 商品信息录入

(2)商品信息管理

① 描述:管理员点击左侧的菜单“商品管理”,页面跳转到商品管理界面,调用后台的商品Action类查询出所有的商品信息,并把这些信息封转到数据

27

集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出商品信息。

② 程序效果图如下图4.8所示

图4.8 商品信息管理页面

商品管理关键代码: public String goodsAdd() {

TGoods goods=new TGoods();

goods.setGoodsCatelogId(goodsCatelogId); goods.setGoodsName(goodsName); goods.setGoodsMiaoshu(goodsMiaoshu); goods.setGoodsPic(fujian);

goods.setGoodsShichangjia(goodsShichangjia); goods.setGoodsTejia(goodsShichangjia); goods.setGoodsIsnottejia(\goods.setGoodsKucun(goodsKucun); goods.setGoodsDel(\goodsDAO.save(goods); this.setMessage(\操作成功\this.setPath(\return \

28

}

public String goodsDel() { }

public String goodsMana() {

String sql=\TGoods goods=goodsDAO.findById(goodsId); goods.setGoodsDel(\goodsDAO.attachDirty(goods); this.setMessage(\操作成功\this.setPath(\return \

goodsIsnottejia\

List goodsList=goodsDAO.getHibernateTemplate().find(sql); for(int i=0;i

TGoods goods=(TGoods)goodsList.get(i); System.out.println(goods.getGoodsCatelogId());

goods.setGoodsCatelogName(catelogDAO.findById(goods.getGoodsCatelog

Id()).getCatelogName());

} Map

request=(Map)ServletActionContext.getContext().get(\

}

request.put(\return ActionSupport.SUCCESS;

public String goodsDetailHou() {

Map

29

request=(Map)ServletActionContext.getContext().get(\

}

public String goodsDetail() {

Map

TGoods goods=goodsDAO.findById(goodsId); request.put(\return ActionSupport.SUCCESS;

request=(Map)ServletActionContext.getContext().get(\ }

4.2.3 会员信息管理

(1)会员信息管理

① 描述:游客访问该站点的时候,可以注册成为会员,管理员登陆后可以管理会员信息,点击左侧的“会员管理“,页面调转中后台的是java类userAction,在此类中,读取数据库中,提取会员的信息,绑定到request对象,再输出到相应的jsp显示页面页面。

② 程序效果图如图4.9所示:

TGoods goods=goodsDAO.findById(goodsId); request.put(\return ActionSupport.SUCCESS;

图4.9 会员信息管理

会员管理核心代码: public String userReg() {

TUser user=new TUser();

30

}

user.setUserName(userName); user.setUserPw(userPw);

user.setUserRealname(userRealname); user.setUserSex(userSex); user.setUserAge(userAge);

user.setUserAddress(userAddress); user.setUserTel(userTel); user.setUserDel(%userDAO.save(user);

HttpServletRequest request=ServletActionContext.getRequest(); request.setAttribute(\注册成功,请登录\return \

public String userLogin() {

String sql=\

userDel='no'\

Object[] con={userName,userPw};

List userList=userDAO.getHibernateTemplate().find(sql,con); System.out.println(userList.size()+\if(userList.size()==0) { } else {

Map session= ServletActionContext.getContext().getSession(); TUser user=(TUser)userList.get(0); session.put(\

31

this.setMessage(\用户名或密码错误\this.setPath(\

Cart cart=new Cart(); }

4.2.4 订单管理

(1)查询订单信息

① 描述:管理员点击左侧的菜单“订单管理”,页面跳转到订单管理界面,调用后台的订单Action类查询出所有的订单信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出订单信息。

② 程序效果图如图4.10所示: }

public String userEdit() {

Map session=ActionContext.getContext().getSession(); TUser user=(TUser)session.get(%user.setUserName(userName); user.setUserPw(userPw);

user.setUserRealname(userRealname); user.setUserSex(userSex); user.setUserAge(userAge);

user.setUserAddress(userAddress); user.setUserTel(userTel); userDAO.attachDirty(user);

HttpServletRequest request=ServletActionContext.getRequest(); request.setAttribute(\修改成功,重新登录后生效\return \ }

return \

session.put(\ this.setMessage(\成功登录\ this.setPath(\

32

图4.10 查询订单信息

(2)订单名细查看

① 描述:管理员点击左侧的菜单“订单管理”,页面跳转到订单管理界面,调用后台的订单Action类查询出所有的订单信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出订单信息。点击要查看的订单信息,弹出订单名细查看窗口,查看该订单的详细内容。

② 程序效果图如图4.11所示:

图4.11 订单名细

订单管理关键代码

public String orderDel() {

}

TOrder order=orderDAO.findById(orderId); orderDAO.delete(order);

Map session= ServletActionContext.getContext().getSession(); TUser user=(TUser)session.get(\this.setMessage(\删除成功\

this.setPath(\return \

public String orderDelByAd()

33

{ }

public String orderShouli() { }

public String orderDetail() {

String sql=\List

TOrder order=orderDAO.findById(orderId); order.setOrderZhuangtai(\已经受理订单 orderDAO.attachDirty(order); this.setMessage(\受理订单成功\this.setPath(\return \

TOrder order=orderDAO.findById(orderId); orderDAO.delete(order);

String sql=\orderItemDAO.getHibernateTemplate().bulkUpdate(sql); this.setMessage(\删除成功\this.setPath(\return \

orderItemList=orderItemDAO.getHibernateTemplate().find(sql);

for(int i=0;i

TOrderItem orderItem=(TOrderItem)orderItemList.get(i);

orderItem.setGoods(goodsDAO.findById(orderItem.getGoodsId()));

} Map

request=(Map)ServletActionContext.getContext().get(\

34

}

request.put(\return ActionSupport.SUCCESS;

4.2.5 系统公告管理

(1)描述:管理员点击左侧的菜单“系统公告”,页面跳转到公告管理界面,调用后台的订单Action类查询出所有的系统公告信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出公告信息。管理员可以对现有公告信息进行删除操作。

(2)程序效果图如图4.12所示:

图4.12 系统公告管理

4.2.6 修改个人密码

(1)描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。

(2)程序效果图如图4.13所示:

图4.13 修改密码

4.2.7 安全退出系统

(1)描述:点此按钮回到系统的主页面。

(2)关键代码:主要是通过javascript语句来实现, item_word[8][4]=\退出系统\

item_link[8][4]=\

35

4.3 普通用户模块

4.3.1 系统主页面实现

(1)描述:页面的上方显示的是该网站的logo,下方主要部分是信息显示区域,左侧上部分是会员登录窗口,下部分是商品分类信息,点击后链接到该类别下的商品信息。

(2)程序运行效果图如图4.14所示:

图4.14 系统主页面设计

4.3.2 商品信息查询

(1)描述:普通用户点击导航栏的“商品信息查询”。调用后台的java类goodsAction查询所有的商品信息,并绑定这些信息到request对象中,在显示层jsp展示出来,然后用户点击商品名称,即可显示该商品的详细的信息。

(2)程序效果图如图4.15所示:

36

图4.15 类别查询界面设计

4.3.3 用户注册

(1)描述:对于游客,至于浏览的功能,如果想进一步使用本系统,比如说购买商品、在线下订单等,首先需要注册一个合法的账号,然后登陆后,方能使用,点击导航栏菜单“免费注册”,调用jsp的open()方法,弹出注册页面,输入相关正确信息后点击注册按钮即可完成注册,如果是没有输入完整的信息,或都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit=\来检查,checkForm()函数中是各种的校验输入数据的方式。

(2)程序效果图如图4.16所示:

图4.16 用户注册界面设计

用户注册关键代码 public String userReg() {

TUser user=new TUser(); user.setUserName(userName); user.setUserPw(userPw);

37

} {

user.setUserRealname(userRealname); user.setUserSex(userSex); user.setUserAge(userAge);

user.setUserAddress(userAddress); user.setUserTel(userTel); user.setUserDel(%userDAO.save(user);

HttpServletRequest request=ServletActionContext.getRequest(); request.setAttribute(\注册成功,请登录\return \

public String userLogin()

String sql=\

userDel='no'\

Object[] con={userName,userPw};

List userList=userDAO.getHibernateTemplate().find(sql,con); System.out.println(userList.size()+\if(userList.size()==0) { } else {

Map session= ServletActionContext.getContext().getSession(); TUser user=(TUser)userList.get(0); session.put(\ Cart cart=new Cart(); session.put(\

38

this.setMessage(\用户名或密码错误\this.setPath(\

}

}

this.setMessage(\成功登录\ this.setPath(\

return \

4.3.4 用户购物

(1)描述:用户注册账号并成功登录商城后,通过主页的商品展示或按商品类别找到想要购买的商品,点击商品图片,打开商品详细信息界面,浏览商品的具体信息,如果想要购买该商品,输入购买数量,点击购买按钮,完成商品购买操作。

(2)程序效果图如图4.17所示:

图4.17 购买商品

购买商品关键代码

public String addToCart() {

39

}

TGoods goods=goodsDAO.findById(goodsId); TOrderItem orderItem=new TOrderItem(); orderItem.setGoods(goods);

orderItem.setGoodsQuantity(quantity);

Map session= ServletActionContext.getContext().getSession(); Cart cart = (Cart)session.get(\cart.addGoods(goodsId, orderItem); session.put(\//this.setMessage(\this.setPath(\return \

4.3.5 购物车管理

(1)描述:和超市购物一样,用户购买的商品暂时存放在购物车中,点击菜单中的“我的购车”,即可查看当用户购物车中的内容,用户可以实现商品数量的增加、减少,删除某一件商品和清空购物车操作。购物车管理采用AJAX技术实现,即上述所说操作,均通过AJAX方式异步处理,页面无任何刷新,后台处理完成后,前台只显示最终的操作结果。

(2)程序效果图如图4.18。

图4.18 购物车管理

购物车管理关键代码

public void addGoods(Integer goodsId, TOrderItem orderItem)

40

{

if (items.containsKey(goodsId)) {

TOrderItem _orderitem = items.get(goodsId);

_orderitem.setGoodsQuantity(_orderitem.getGoodsQuantity()+

orderItem.getGoodsQuantity());

}

public void delGoods(Integer goodsId) { }

public void updateCart(Integer goodsId, int quantity) {

TOrderItem orderItem = items.get(goodsId);

}

public int getTotalPrice()

{

int totalPrice = 0;

for (Iterator it = items.values().iterator(); it.hasNext();) {

TOrderItem orderItem = (TOrderItem) it.next();

items.put(goodsId, _orderitem);

} else { }

items.put(goodsId, orderItem);

items.remove(goodsId);

orderItem.setGoodsQuantity(quantity); items.put(goodsId, orderItem);

TGoods goods = orderItem.getGoods(); int quantity = orderItem.getGoodsQuantity();

41

}

}

totalPrice += goods.getGoodsTejia() * quantity;

return totalPrice;

4.3.6 网站公告

(1)描述:商城注册用户可通过该模块实现查看商城的网站公告,及时了解商城公告信息。

(2)程序效果图如图4.19所示:

图4.19 网站公告

42

5 系统测试

5.1 系统测试目的与意义

系统测试是管理信息系统开发周期中一个十分重要而漫长的的阶段。其重要性体现在它是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查。

系统测试的任务是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这个阶段又可以分为三个步骤:模块测试,测试每个模块的程序是否正确;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒测试,应覆盖系统随偶联合的部件,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出需求规格不符合或与之矛盾的地方。

5.2 测试过程

在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。

这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。

5.2.1 主页面的登录模块测试

测试流程: (1) 打开系统首页,输入错误的登录信息; (2) 登录;

(3) 输入正确的登录信息; (4) 登录; (5) 测试结果。

43

表5.1登陆模块测试表

模块名称 登录模块 测试用例 预期结果 实际结果 登陆失败,提示请输入用户名 失败,提示输入密码 登陆失败,提示用户名或者密码错误 通过 通过 是否通过 通过 用户名:null 弹出错误提示,请密码:null 输入用户名 弹出错误提示,请输入密码 弹出错误提示,用户名或者密码错误 登录模块 用户名:m1 密码:null 登录模块 用户名:m1 密码:1 5.3 其他错误

在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除。比如在servlet路径配置时因粗心错误导致运行导致所报错误,如图5.1:

图5.1 由于servlet路径配置错误,运行时的提示

44

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

Top