1、基于 JSP的网上购物系统的设计与实现摘 要近年来,随着 Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念,本购物系统基于 B/S模式,实现了当前购物网站的基本功能。本论文就此购物系统进行了详细全面的论述。系统中用户的主要功能有:用户登录、注册、商品浏览、商品购买、订单管理以及个人信息管理。管理员的主要功能有:商品管理、用户管理以及订单信息管理。全文共分为五个部分,第一部分是介绍相关理论知识;第二部分介绍系统总体设计;第三部分介绍系统具体实现过程;第四部分是测
2、试工作。最后是结论。关键词:电子商务;购物系统;JSP;数据库The Design and Realization of shopping Online System Based on JSPAbstractIn recent years, Internet has become the best channel for collection of information and entered the traditional field of circulation with the rapid rising. E-commerce has been popular, and more an
3、d more online stores are established on the Internet, displaying a new idea of shopping. This Shopping system based on B/S mode, realize the base function of the current Shopping site.This paper introduces the Shopping system in detail. The main functions of people in system include login, registrat
4、ion, view and purchasing of goods, management of the Orders and customers. The main functions of administrator include management of the goods, users and Orders.There are five sections in this paper, the first is introduction of Related theoretical knowledge; the second is introduction of the design
5、 of system; the third is introduction of the process of realization; the forth is test; and the conclusion in the end.Key words: E-commerce; Shopping System; JSP; Database目 录论文总页数:22 页1. 引言 11.1 网上购物系统的发展 11.2 网上购物的现状 11.3 网上购物系统的构建 12. 相关理论基础 22.1 JSP技术 22.1.1 JSP的简介 22.1.2 JSP的优点 22.1.3 JSP的工作原理 2
6、2.2 数据库及相关技术简介 32.2.1 SQL语言简介 32.2.2 Microsoft SQL Server 简介 .32.2.3 JAVA技术简介 .42.2.4 TOMCAT简介 .43. 系统总体设计 43.1 系统设计 43.1.1 系统功能分析 43.1.2 系统体系结构 53.1.3 系统 流程 63.2 数据库设计 63.2.1 数据库需求分析 63.2.2 数据库的逻辑结构分析 73.2.3 数据库表的设计 73.2.4 数据库的连接 84. 具体设计分析 94.1 系统首页 94.2 具体模块实现 94.2.1 商品查看 94.2.2 购物车 .114.2.3 订单管理
7、 .124.2.4 用户个人信息管理 .134.2.5 用户控件 .164.2.6 商品管理 .164.2.7 管理用户 .175. 系统测试 .185.1 前台测试 .185.2 后台测试 .19结 论 .20参考文献 .20致 谢 .21声 明 .22第 1 页 共 22 页1.引言1.1 网上购物系统的发展近年来,随着 Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。网上订购系统作为 B2B,B2C,C2C电子商务的前端商务平台,在其商务活动全过程中起
8、着举足轻重的作用。本文旨在讨论如何建设 B2C的网上购物系统。网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或 EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。1.2 网上购物的现状在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特,家庭仓储、科罗格、J.C 培尼等纷纷挤身于网络经
9、商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在 1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。根据CNNIC的统计结果,截止 2006中国有互联网用户 6962万人,而又有 40.7%以上的网民在过去的一年里有过网上购物经历,并且这一数字还在以 17%左右的速度增长,这说明在中国发展网上购物具有良好的群众基础,网上购物方式日趋被大家所接受。1.3 网上购物系统的构建现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划。每一
10、个细小的环节都很重要。这样才能使得在电子交易时避免不必要错误发生。我将使用 HTML、JSP 等技术来编辑网页,传统的管理信息系统的信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本系统通过运用 JSP技术把数据库和动态网页连接,得出错和成本都相应的降低。本文在实际应用开发中解决方案是建立网站, 以及自己的数据库,使得所第 2 页 共 22 页需商品信息可以及时的保存、更新,以更好的及时了解商品买卖的情况。2.相关理论基础2.1JSP技术2.2.4 JSP的简介JS
11、P是 JAVA SERVER PAGES的缩写,由 SUN公司倡导,于 1999年推出,正日益成为开发 WEB动态网站的重要而快速有效的开发技术。JSP充分利用了 JAVA技术的优势,具有极强的扩展能力和良好的收缩性,与开发平台无关,这源于 JAVA的“一次编写,到处运行”的特点,同时也是一项安全的技术。它具有良好的动态页面与静态页面分离的能力,编译后运行,因而正逐渐成为 internet开发的主流技术。2.2.4 JSP的优点(1)对于用户界面的更新,其实就是由Web Server进行的,所以给人的感觉更新很快。 (2)所有的应用都是基于服务器的,所以它们可以时刻保持最新版本。 (3)客户端
12、的接口不是很繁琐,对于各种应用易于部署、维护和修改。2.2.4 JSP的工作原理在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,jspInit()方法在
13、servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入“垃圾收集“处理。 jspInit()及j多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。 如果 .jsp文件被修改了,服务器将
14、根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延第 3 页 共 22 页迟。 此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将spDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。 2.2 数据库及相关技术简介2.2.4 SQL语言简介SQL是英文 Structured Query Language的缩
15、写,意思为结构化查询语言。 SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL 被作为关系型数据库管理系统的标准语言。SQL 语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。 目前,绝大多数流行的关系型数据库管理系统,如 Oracle、 Sybase、 Microsoft SQL Server、 Access 等都采用了 SQL语言标准。虽然很多数据库都对 SQL语句进行了再开发和扩展,但是包括 Select、 Insert、 Update、 Delete、 Create 以及 Drop在内的标准的 SQL命令仍
16、然可以被用来完成几乎所有的数据库操作。在众多的 SQL命令中,select 语句应该算是使用最频繁的。select 语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。select 语句中位于 select关键词之后的列名用来决定哪些列将作为查询结果返回。用户可以按照自己的需要选择任意列,还可以使用通配符“*”来设定返回表格中的所有列。select 语句中位于 from关键词之后的表格名称用来决定将要进行查询操作的目标表格。除了上面所提到的运算符外,LIKE 运算符在 where条件从句中也非常重要。LIKE运算符的功能非常强大,通过使用 LIKE运算符可以设定只选择与用户规定格式
17、相同的记录。2.2.4 Microsoft SQL Server 简介SQL Server 2000 是建立在 SQL Server 7.0 在可伸缩性、可用性、可管理性和数据仓库成功的基础上,并且引入了针对电子商务的重要新功能。在高性能和企业级可伸缩性领域,SQL Server 2000 设计成利用Windows2000 对更多处理器、更大的系统内存的支持,最终达到支持 64 位硬件平台。在不断提升可用性的努力过程中,SQL Server 2000 采用 Windows 2000 四路群集,提供了大大改进的群集支持。SQL Server 7.0 已经在可管理性和易第 4 页 共 22 页用性
18、方面在行业内领先,SQL Server 2000 通过与 Windows 2000 活动目录紧密结合进一步改进了这些功能。而且,SQL Server 2000 还包含对现有管理工具和实用程序的重大改进,并引入更具自我调节和自我管理的引擎功能。SQL Server 2000 按照设计可以为部署和维护强大的、易于管理、支持商务活动的 Web 站点提供最好的性能,这些站点可以从事商家和商家之间或商家与客户之间的交易。在寻求一个支持您的电子商务解决方案的数据库时,需要考虑的项目包括:可用性、性能、可管理性和价格。2.2.4 JAVA技术简介JSP程序开发就离不开 JAVA语言,这里简单介绍下 JAVA
19、语言的特点:Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。具体来说,它具有如下特性:(1)简单性、面向对象。(2)分布式、解释型。(3)可靠、安全、平台无关。(4)可移植、高性能、多线程、动态性等。2.2.4 TOMCAT简介Tomcat是一个免费的开源的 Serlvet容器,它是 Apache基金会的 Jakarta项目中的一个核心项目,由 Apache,Sun 和其它一些公司及个人共同开发而成。由于有了 Sun的参与和支持,最新的 Servlet和 Jsp规范总能在 Tomcat中得到体现。由于 Java的跨平台特性,基于 Java的 Tomcat也具有跨平台性。本系统采用
20、 tomcat作为服务器,在 tomcat5.0环境下对系统进行测试。3.系统总体设计3.1 系统设计3.1.1 系统功能分析一个典型的 B2C电子商务网上订购系统主要功能有:(1)为客户提供 24小时方便快捷的在线订购服务。(2)商品信息的维护与管理,包括价格的调整、现有商品信息的修改、新商品信息的加入、过时商品信息的删除等。(3)高效的商品数据方案,对商品信息进行科学、灵活地分类、存储,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出自己所需商品。(4)强大、方便、快捷的查询功能。提供关键字查询(如:查找所有商品)。第 5 页 共 22 页(5)订单号模块所谓订单号模块,就是客户购
21、买完商品后,系统自动分配一个购物号码给客户,以方便客户随时查询账单处理情况。了解现在货物的状态。(6)订单管理。为分销商的 EPR系统提供数据接口。管理员可以查看历史记录、订单状态,并且能够在最短的时间内通知用户。3.1.2 系统体系结构购物系统用户注册用户登录用户管理商品管理订单管理购物车图 3-1系统功能模块图根据体系结构可将系统分为用户和管理两个角色:(1)用户:用户通过注册以后成为合法登录用户。登录以后可以查看修改个人信息在线购买商品查看定单状态。(2)管理员:系统管理员可以管理整个系统,包括查看用户定单并修改相应信息查看用户信息,对不信任用户也可以对他进行删除。查看商品信息,可以删除
22、不需要的商品。添加商品信息。第 6 页 共 22 页3.1.3 系统流程开始是否登录是否管理员浏览普通页面管理页面 用户页面管理用户管理商品管理定单个人信息管理购物车管理在线购物NYY N退出系统图 3-2系统流程图3.2 数据库设计3.2.1 数据库需求分析(1)商品数据的准备。首先要搜集分销商的所有商品数据。这些商品数据可以分为三类:纸面记录、电子数据(XML、Access、Excel 等文件)、网上数据。无论对于哪一种数据,都要对其进行检查,修正有问题的数据,删除重复和过期的记录。在检查的同时,还要对这些数据进行分析,为制定商品目录方案做准备。(2)商品数据方案的制定。商品数据方案制定的
23、目的在于:对商品进行科学、灵活地分类,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出所需商品。使系统支持强大、方便、快捷的查询功能,实现模糊查询和智能查询。高效的商品数据方案能提高数据库性能,提高网页浏览速度。(3)客户信息表的制定。客户信息表内保存着在线商店中所有客户个人所拥有的个人信息和资料,是在线商店的后台管理人员进行商品销售的设计规划和进行决策的依据和参考。客户 ID则是客户个人身份证明的依据。第 7 页 共 22 页3.2.2 数据库的逻辑结构分析对于系统用户信息数据库,有以下数据项和数据结构:用户信息:用户 ID(自动编号) 、用户姓名、电话号码、Email、地址、邮编。
24、对于系统的商品信息系统,有以下数据项和数据结构:商品记录信息:商品的 ID(自动编号) 、商品名称、商品单价、商品数量、商品所属类别。而网上购物系统就是基于以上各个数据库的连接和综合,把各个独立的数据库通过内在的关联性统一到一个主页面里,从而方便客户的访问和购买,实现了一对一的交互。用户在购买商品前可以先看看商品目录,看看有没自己需要的商品,在商品的目录里有各个商品的具体的介绍,比如说商品的名称,数量,价格等,用户在看好自己的商品后,在商品的搜索中,你可以选择你所需的商品,用户在选择自己的商品时,系统则连接到后台关于此商品信息的数据库中,找到适合客户需求的信息。客户将选购的商品放入系统所提供的
25、购物篮里,此时顾客可以继续选购另外的商品,或者删除原先购买的商品,并可对商品进行名称和数量上的修改和添加。点击“继续购买” ,重复以上进行的购买活动。直到顾客满意。购物结束后,进行提交,点击“提交” ,完成购物。3.2.3 数据库表的设计分别建立以下的表以满足需要:本系统需要建立 4个数据表,他们分别是:管理员表(my_goodsadminuser):存放管理员用户名,管理员密码信息。用户表(my_users):存放用户编号,用户名,用户密码,真实姓名,性别,电话,email 等信息。商品信息表(my_goods):存放商品编号,商品名,销售员,类别,提供商,价格以及数量等信息。定单表(my_
26、indentlist):存放定单编号,用户,总价,是否付款,是否发货,用户备注等信息。各表具体信息见下图:表 3-1 my_goodsadminuser表中字段字段名 数据类型 字段描述adminuser 文本 管理员用户名adminpass 文本 管理员密码第 8 页 共 22 页表 3-2 my_users表中字段字段名 数据类型 字段描述id 数字 用户主键username 文本 用户名passwd 文本 用户密码Names 文本 真实姓名Sex 文本 性别Address 文本 地址Phone 文本 电话Post 文本 邮编Email 文本 Email地址表 3-3 my_goods表中
27、字段字段名 数据类型 字段描述ID 数字 商品编号Goodsname 文本 名称Goodsclass 数字 类别Seller 数字 销售员Provider 文本 提供商Price 数字 价格Amount 文本 数量Content 文本 说明表 3-4 my_indentlist表中字段字段名 数据类型 字段描述ID 数字 组 IDusername 文本 商品购买用户Price 文本 定单价格ispayoff 文本 是否付款issales 文本 是否发货content 文本 备注3.2.4 数据库的连接在本系统中,系统会频繁的访问数据库。本系统采用 JSP的 JDBC-ODBC驱动程序。数据库的
28、连接代码是通用的。代码如下:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“);String url=“jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=biye“;String strUser = “sa“;String strPassword = “417929“;Connection con = DriverManager.getConnection(url, strUser, strPassword);第 9 页 共 22 页Statement st = c
29、on.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 4.具体设计分析4.1 系统首页图 4-1 网上购物系统首页此功能模块由 index1.jsp来实现,并提供了本系统绝大多数功能的入口,例如:会员注册、登录,管理员登录,查询等。会员登录主要是将用户输入的用户名和密码与数据库中 my_users表中的已有的信息进行比对,如果完全一样,则是合法用户,可以成功登录,如果不一样,则登录失败。查询功能是通过输入商品名称关键字和下拉菜单中商品类别进行查询提交查询信息以后由 find.Jsp显示查询
30、结果。此功能未注册用户也可用,但是所查询商品不提供购买功能。4.2 具体模块实现4.2.1 商品查看此功能模块由 buy.jsp来实现。当用户进入购物中心以后,系统会显示所有的商品基本信息。但在商品数量过于庞大以后则不容易查看所需商品,所以系统提供了按类别查询的功能。下拉菜单中有商品的所有类别,用户根据类别以 post方法传递表单。再在该页第 10 页 共 22 页设置接收字段:String bookclass=codeToString(request.getParameter(“bookclass“);通过关键字 bookclass对数据库商品表 my_goods进行查询:SELECT *
31、FROM my_goods where goodsclass=“+bookclass.trim()+“这样就比较清楚的可以获得各类别的商品的信息。有了自己需要购物的商品,则可以通过点击购买将商品添加到购物车,详细信息可以查看商品的详细信息。详细信息页面 xiangxi.jsp通过商品 ID查询数据库,除了显示以上信息以外,还显示商品数量,备注等信息。界面如下图:图 4-2 商品信息为了不让庞大的数据让人看得眼花缭乱,在商品的实现时是分页显示,每页显示 5项记录。分页代码如下:int dipage=1;/当前页码数默认为1String pages=request.getParameter(“di
32、page“);if(pages=null)pages=“1“;int countRecord=0;/记录条数int countPageRecord=0;/每页记录条数int countPage=0;/总页数countPageRecord=5;/每页5条记录,要设置每页记录条数就更改这个变量的值countRecord=rs.getRow();/得到总页数if(countRecord/countPageRecord=0)countPage=countRecord/countPageRecord;else第 11 页 共 22 页countPage=countRecord/countPageReco
33、rd+1;/把记录指针移至当前页第一条记录之前if(dipage-1)*countPageRecord=0)rs.beforeFirst();4.2.2 购物车此功能模块由:buybook2.Jsp,addgoods.Jsp,minusGoods.Jsp,deleteGoods,buy.java来实现。当用户选定某样商品并在登录后的情况下,可以点击购买将商品添加到购物车。在购物车中可以设置购买商品的数量。设置好数量以后按提交按钮根据商品唯一 ID将商品添加到购物车。在 addgoods.jsp中通过获取商品 ID:String id=request.getParameter(“id“);Int
34、 Goods_Count=Integer.parseInt(request.getParameter(“book_count“)以及 buycar.Java中的函数public void addGoods(String Goods_id,int Goods_Count)来实现。 提交购物以后,可以选择查看购物车,也可以无限制的选择继续购买。选择继续购买以后跳转到商品购买页面 buy.Jsp选择查看购物车则跳转到buybook2.Jsp。在跳转到 buybook2.Jsp页面以后,如果用户不满意该选择可以删除或者更改所选商品数量,更改商品数量是通过 buycar.Java和minusGoods.
35、Jsp一起来实现。关键代码:buycar.Java:public boolean minusGoods(String Goods_id,int Goods_Count)deleteGoods(Goods_id);minusgoods.Jsp:intGoods_Count=Integer.parseInt(request.getParameter(“book_count“)buycar.minusGoods(id,Goods_Count);第 12 页 共 22 页用户在确定需要购买以后,就可以提交购物车,完成购物功能。图 4-4 购物车购物车中商品总价格 totalprice是通过商品单价和数
36、量进行结算。代码如下:double totalprice=0;totalprice=totalprice+rs.getFloat(“price“)*(Integer)list.get(goods).intValue();4.2.3 订单管理本模块划分为 2个部分,一是用户对定单的管理,二是管理员对定单的管理。用户对定单的管理通过 userjiemian.Jsp实现查看自己的定单状态是否付款以及删除自己的定单。查看自己的定单是通过用户名访问定单表以获取自身定单,删除定单是通过定单 ID删除掉选定的定单:a href=delcord.jsp?id=“+rs.getString(“indentno“
37、)+“用户也可以通过查询指定的定单ID来查询想要知道的定单的信息。通过sqlString=“delete from my_indentlist where id=“+ID;语句删除以前的定单。管理员管理定单除了拥有用户管理定单的功能以外,还可以通过定单 ID更新定单的状态,修改定单的付款状态以及发货状态。修改定单页面 change.jsp.第 13 页 共 22 页通过获取定单 ID,用 update语句更新定单信息。定单管理界面如下图:图 4-5查看当前订单定单查询代码如下:SELECT * FROM my_indentlist where username=“+username+“4.2.
38、4 用户个人信息管理此功能模块由 reg.Jsp,log.Jsp,changemima.Jsp,psxinxi.jsp来实现。分别别实现用户的注册以及密码的修改。Psxinxi 查看自己的基本注册情况。如下图:第 14 页 共 22 页图 4-6查看用户自己基本情况用户点击“个人信息”以后系统就会查询数据库 my_users表显示当前用户信息。由于整个用户页面都用 session变量控制访问权限,所以在进行查询的时候就根据 seesion变量中的 username对数据库进行查询,查询代码如下:rs=sql.executeQuery(“SELECT * FROM my_users where
39、username like %“+username.trim()+“%“);reg.Jsp用来注册用户的基本信息,包括用户名,用户密码,性别,电话,地址,邮编,Email 等基本信息。为了系统用户名和密码等的合法化,系统通过 function on_submit()函数来控制输入,如果为空则提示用户名为空返回重新输入。示例代码如下:if (form1.username.value=“)alert(“用户名不能为空“);同时为了保证输入合法化如 Email这样的信息,系统通过判断语句来确定输入是否合法,示例代码:if(form1.email.value.length!=0) for(i=0;i来
40、实现,避免简单代码的重复编写,也达到美观实用的效果。4.2.6 商品管理此功能是通过 booklist.Jsp和addbook.JsP,addbooklog.Jsp,delcord.jsp 来实现addbook.Jsp主要是用来添加商品的信息,包括商品名称,销售员,厂商,编号,价格,数量等信息。在下拉菜单中可以选取商品的类别进行分类添加。写好添加的商品信息以后将表单数据传递给 addbook.Jsp对数据进行处理,通过 addbooklog.Jsp的 insrt语句将表单数据写入数据库。具体代码如下:String bookname=codeToString(request.getParamet
41、er(“bookname“);if(bookname=null)bookname=“;String sqlstring=null;sqlstring=“insert into my_goods(goodsname,goodsclass,seller,provider,goodsno,content,price,amount)“+“ values (“+bookname+“,“+bookclass+“,“+author+“,“+publish+“,“+bookno+“,“+content+“,“+price+“,“+amount+“)“;/数据库连接代码st.executeUpdate(sqls
42、tring);完成操作以后如果操作成功则跳转到管理员主界面,此时可以通过查看商品信息来查看刚才添加的商品,如果操作失败则会跳转到 ERROR。HTM 页面提示操作失败,可以返回添加页面重新对商品进行添加。booklist.Jsp主要是查看所有商品的信息,以及删除商品。在点击删除按钮以后,系统将商品唯一 ID传递给 delcord.Jsp。delcord.Jsp 通过getParameter(“id“)接收 ID以后,根据 ID在数据库中用 delelte语句删除该记录。操作起来十分方便和快捷。具体删除代码:id=Long.parseLong(request.getParameter(“id“)
43、;sqlString=“delete from my_goods where id=“+id;/数据库连接第 17 页 共 22 页执行删除语句sql.executeUpdate(sqlString);商品添加页面如下图:图 4-8 添加商品4.2.7 管理用户此功能模块由 userlist.Jsp,delusercord.Jsp来实现。userlist.Jsp用来查询所有用户的信息,同样用分页显示的方式将信息显示出来,如果有需要删除的用户,则通过传递用户 ID到delusercord.Jsp。delusercord.Jsp 在接收到用户 ID以后,通过访问数据库运用 delete语句删除选定
44、用户记录。具体删除语句如下:%/接收要删除的用户ID号long id;tryid=Long.parseLong(request.getParameter(“id“);if(id!=0)/接收到的参数正确sqlString=“delete from my_users where id=“+id;sql.executeUpdate(sqlString);con.close();第 18 页 共 22 页删除成功以后跳转到 userlist.Jsp页面重新查询所有用户。如果删除失败则通过:out.print(“删除失败“);提示删除失败。图 4-9 用户管理5.系统测试5.1 前台测试完成了系统主要
45、模块的开发后,系统需要进行必要的运行测试,以检验系统的正确性,以下将按照用户购买商品的流程和管理员对主要信息的管理来测试系统。首先来到前台用户的登陆界面,先注册一个用户名为 wang 的新用户,填写相关资料后,点击确定后,注册成功跳转到主页面,在测试中发现不同用户可以注册相同的 ID,显然这在实际应用中是不现实的,后来在代码中添加查询比较代码,通过比较注册用户名和数据库中的用户名来判断该用户名是否有效来解决这个问题。注册成功以后回到主页登录,进入用户界面。点击商品查询以及购物等页面基本正常,但是在测试过程中发现了非常严重的问题,有的页面本来应该在登录以后才能访问,比如查看自己定单以及购买商品等
46、注册登录用户的页面。而在不用登录直接在 IP地址栏输入地址也可直接访问。这显然是不现实的。于是运用控制变量 session来解决了这个问题,添加如下代码:登录页面添加的代码:session.setAttribute(“username“,codeToString(username);访问控制页面添加的代码:String username = (String)session.getAttribute(“username“);if ( username = null | username.equals(“) )第 19 页 共 22 页response.sendRedirect(“error.ht
47、m“);以此来解决访问控制的问题,添加代码以后如果直接输入地址则会跳转到error.Htm 页面提示没有登录,要求返回登录页面登录以后访问。5.2 后台测试当点击管理员登录按钮时,就来到管理员管理登陆页面,当我们不输入用户名而直接点击提交时,系统会提示请输入用户名错误。这个在前台用户登陆中也同样设置了相应的验证。输入正确的用户名和密码后,便可以进入系统可以进行管理了,首先我们测试添加新商品,正确填入商品信息并提交后,系统会提示添加成功,通过打商品查看的页面可以查看到,因此证明添加成功。对商品的删除更为简便,只要在选择商品类别和商品型号后,只要点击“删除”就能够成功实现操作。对于用户管理,管理员
48、查看当前所有用户的相关信息,并且能够删除带有不良企图的非法注册用户的 ID,操作起来简便、快捷。在测试的过程中同样发现和用户模块相同的致命性错误,就是可以直接通过地址栏而不需要验证就可以具备管理员权限。这是一个相当大的漏洞。最后也通过 session变量得以解决这个问题。第 20 页 共 22 页结 论通过这三个月的学习和工作,完成了网上购物系统的设计,满足了用户需求。由于设计是基于 B/S模式,该系统具有良好的可移植性等优点,并且具有相当不错的应用前景。同时由于该系统使用 JavaScript和 JSP技术,使我对该门技术又有了更加深入的了解,并且对应用 Dreamweaver制作静态页面也
49、有了相当的心得。在完成设计的三个月时间里,我从一个 JSP的门外汉到最终完成自己的作品,这段时间里自身知识的丰富和开发技能的提高是显而易见的,通过该设计的制作,同样使我涉及了很多其他的相关专业知识,增长了知识的沉淀。当然,这段历程对任何一个初学者来说都是充满艰难的,其间我都记不得遇到多少次这样那样的问题,但是通过老师和其它好心人的指点最终还是顺利完成了作品,还积累了很多开发过程中宝贵的经验,对以后的学习和提高都是很有帮助的。由于水平及时间有限,很多可以实现的功能都未完成,不过相信通过不断的学习和提高,在这一方面将会更上一层楼。参考文献1 刘中兵, 李伯华JSP 数据库项目案例导航M北京:清华大学出版社,2006。2 邓子云,张赐JSP 网络编程从基础到实践M北京:电子工业出版社,2006。3 方睿.网络数据库的原理及应用M. 成都:四川大学出版社,2002。4 朱仲杰.JAVA2 全方位学习M.北京:机械工业出版社,2006。5 杨思申,刘思源.Dreamweare3.0 入门与提高M. 北京:清华大学出版社,200