《基于JSP的网上购物系统的设计与实现(共25页).doc》由会员分享,可在线阅读,更多相关《基于JSP的网上购物系统的设计与实现(共25页).doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 po
3、pular, and more and 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 includ
4、e login, registration, 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 introduc
5、tion of the design 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. 引言1.1 网上购物系统的发展近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店
6、,向消费者展示出一种新颖的购物理念。网上订购系统作为B2B,B2C,C2C电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。本文旨在讨论如何建设B2C的网上购物系统。网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。1.2 网上购物的现状在美、日等信息化程度较高的国家和地区
7、,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特,家庭仓储、科罗格、J.C培尼等纷纷挤身于网络经商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。根据CNNIC的统计结果,截止2006中国有互联网用户6962万人,而又有40.7%以上的网民在过去的一年里有过网上购物经历,并且这一数字还在以17%左右的速度增长,这说明在中国发展网上购物具有良好的群众基础,网上购物方式日趋
8、被大家所接受。1.3 网上购物系统的构建现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划。每一个细小的环节都很重要。这样才能使得在电子交易时避免不必要错误发生。我将使用HTML、JSP等技术来编辑网页,传统的管理信息系统的信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本系统通过运用JSP技术把数据库和动态网页连接,得出错和成本都相应的降低。本文在实际应用开发中解决方案是建立网站, 以及自己的数据库,使得所需商品信息可以及时的保存、更新,以更好的及时了解商
9、品买卖的情况。2. 相关理论基础2.1 JSP技术2.2.4 JSP的简介JSP是JAVA SERVER PAGES的缩写,由SUN公司倡导,于1999年推出,正日益成为开发WEB动态网站的重要而快速有效的开发技术。JSP充分利用了JAVA技术的优势,具有极强的扩展能力和良好的收缩性,与开发平台无关,这源于JAVA的“一次编写,到处运行”的特点,同时也是一项安全的技术。它具有良好的动态页面与静态页面分离的能力,编译后运行,因而正逐渐成为internet开发的主流技术。2.2.4 JSP的优点(1)对于用户界面的更新,其实就是由Web Server进行的,所以给人的感觉更新很快。 (2)所有的应
10、用都是基于服务器的,所以它们可以时刻保持最新版本。 (3)客户端的接口不是很繁琐,对于各种应用易于部署、维护和修改。2.2.4 JSP的工作原理在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SER
11、VLET的jspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入垃圾收集处理。 jspInit()及j多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存
12、,所以响应是非常快的。 如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。 虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。 此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将spDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。 2.2 数据库及相关技术简介2.2.4 SQL语言简介SQL是英文Structured
13、 Query Language的缩写,意思为结构化查询语言。 SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。 目前,绝大多数流行的关系型数据库管理系统,如Oracle、 Sybase、 Microsoft SQL Server、 Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select、 Insert、 Update、 Delete、 Create 以及Drop在内的标
14、准的SQL命令仍然可以被用来完成几乎所有的数据库操作。在众多的SQL命令中,select语句应该算是使用最频繁的。select语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。select语句中位于select关键词之后的列名用来决定哪些列将作为查询结果返回。用户可以按照自己的需要选择任意列,还可以使用通配符“*”来设定返回表格中的所有列。select语句中位于from关键词之后的表格名称用来决定将要进行查询操作的目标表格。除了上面所提到的运算符外,LIKE运算符在where条件从句中也非常重要。LIKE运算符的功能非常强大,通过使用LIKE运算符可以设定只选择与用户规定格式相同
15、的记录。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 已经在可管理性和易用性方面在行业内领先,SQL Serv
16、er 2000 通过与Windows 2000 活动目录紧密结合进一步改进了这些功能。而且,SQL Server 2000 还包含对现有管理工具和实用程序的重大改进,并引入更具自我调节和自我管理的引擎功能。SQL Server 2000 按照设计可以为部署和维护强大的、易于管理、支持商务活动的Web 站点提供最好的性能,这些站点可以从事商家和商家之间或商家与客户之间的交易。在寻求一个支持您的电子商务解决方案的数据库时,需要考虑的项目包括:可用性、性能、可管理性和价格。2.2.4 JAVA技术简介JSP程序开发就离不开JAVA语言,这里简单介绍下JAVA语言的特点:Java是一种跨平台,适合于分
17、布式计算环境的面向对象编程语言。具体来说,它具有如下特性:(1)简单性、面向对象。(2)分布式、解释型。(3)可靠、安全、平台无关。(4)可移植、高性能、多线程、动态性等。2.2.4 TOMCAT简介Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。本系统采用tomcat作为服务器,在tomcat5.0环境下对系统进行测试。
18、3. 系统总体设计3.1 系统设计3.1.1 系统功能分析一个典型的B2C电子商务网上订购系统主要功能有:(1)为客户提供24小时方便快捷的在线订购服务。(2)商品信息的维护与管理,包括价格的调整、现有商品信息的修改、新商品信息的加入、过时商品信息的删除等。(3)高效的商品数据方案,对商品信息进行科学、灵活地分类、存储,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出自己所需商品。(4)强大、方便、快捷的查询功能。提供关键字查询(如:查找所有商品)。(5)订单号模块所谓订单号模块,就是客户购买完商品后,系统自动分配一个购物号码给客户,以方便客户随时查询账单处理情况。了解现在货物的状态。
19、(6)订单管理。为分销商的EPR系统提供数据接口。管理员可以查看历史记录、订单状态,并且能够在最短的时间内通知用户。3.1.2 系统体系结构图3-1系统功能模块图根据体系结构可将系统分为用户和管理两个角色:(1)用户:用户通过注册以后成为合法登录用户。登录以后可以查看修改个人信息在线购买商品查看定单状态。(2)管理员:系统管理员可以管理整个系统,包括查看用户定单并修改相应信息查看用户信息,对不信任用户也可以对他进行删除。查看商品信息,可以删除不需要的商品。添加商品信息。3.1.3 系统流程开始是否登录是否管理员浏览普通页面管理页面用户页面管理用户管理商品管理定单个人信息管理购物车管理在线购物N
20、YYN退出系统图3-2系统流程图3.2 数据库设计3.2.1 数据库需求分析(1)商品数据的准备。首先要搜集分销商的所有商品数据。这些商品数据可以分为三类:纸面记录、电子数据(XML、Access、Excel等文件)、网上数据。无论对于哪一种数据,都要对其进行检查,修正有问题的数据,删除重复和过期的记录。在检查的同时,还要对这些数据进行分析,为制定商品目录方案做准备。(2)商品数据方案的制定。商品数据方案制定的目的在于:对商品进行科学、灵活地分类,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出所需商品。使系统支持强大、方便、快捷的查询功能,实现模糊查询和智能查询。高效的商品数据方案能
21、提高数据库性能,提高网页浏览速度。(3)客户信息表的制定。客户信息表内保存着在线商店中所有客户个人所拥有的个人信息和资料,是在线商店的后台管理人员进行商品销售的设计规划和进行决策的依据和参考。客户ID则是客户个人身份证明的依据。3.2.2 数据库的逻辑结构分析对于系统用户信息数据库,有以下数据项和数据结构:用户信息:用户ID(自动编号)、用户姓名、电话号码、Email、地址、邮编。对于系统的商品信息系统,有以下数据项和数据结构:商品记录信息:商品的ID(自动编号)、商品名称、商品单价、商品数量、商品所属类别。而网上购物系统就是基于以上各个数据库的连接和综合,把各个独立的数据库通过内在的关联性统
22、一到一个主页面里,从而方便客户的访问和购买,实现了一对一的交互。用户在购买商品前可以先看看商品目录,看看有没自己需要的商品,在商品的目录里有各个商品的具体的介绍,比如说商品的名称,数量,价格等,用户在看好自己的商品后,在商品的搜索中,你可以选择你所需的商品,用户在选择自己的商品时,系统则连接到后台关于此商品信息的数据库中,找到适合客户需求的信息。客户将选购的商品放入系统所提供的购物篮里,此时顾客可以继续选购另外的商品,或者删除原先购买的商品,并可对商品进行名称和数量上的修改和添加。点击“继续购买”,重复以上进行的购买活动。直到顾客满意。购物结束后,进行提交,点击“提交”,完成购物。3.2.3
23、数据库表的设计分别建立以下的表以满足需要:本系统需要建立4个数据表,他们分别是:管理员表(my_goodsadminuser):存放管理员用户名,管理员密码信息。用户表(my_users):存放用户编号,用户名,用户密码,真实姓名,性别,电话,email等信息。商品信息表(my_goods):存放商品编号,商品名,销售员,类别,提供商,价格以及数量等信息。定单表(my_indentlist):存放定单编号,用户,总价,是否付款,是否发货,用户备注等信息。各表具体信息见下图:表3-1 my_goodsadminuser表中字段字段名数据类型字段描述adminuser文本管理员用户名adminpa
24、ss文本管理员密码表3-2 my_users表中字段字段名数据类型字段描述id数字用户主键username文本用户名passwd文本用户密码Names文本真实姓名Sex文本性别Address文本地址Phone文本电话Post文本邮编Email文本Email地址表3-3 my_goods表中字段字段名数据类型字段描述ID数字商品编号Goodsname文本名称Goodsclass数字类别Seller数字销售员Provider文本提供商Price数字价格Amount文本数量Content文本说明表3-4 my_indentlist表中字段字段名数据类型字段描述ID数字组IDusername文本商品购
25、买用户Price文本定单价格ispayoff文本是否付款issales文本是否发货content文本备注3.2.4 数据库的连接在本系统中,系统会频繁的访问数据库。本系统采用JSP的JDBC-ODBC驱动程序。数据库的连接代码是通用的。代码如下:Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);String url=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=biye;String strUser = sa; String strPassword = ; Con
26、nection con = DriverManager.getConnection(url, strUser, strPassword); Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 4. 具体设计分析4.1 系统首页图4-1 网上购物系统首页此功能模块由index1.jsp来实现,并提供了本系统绝大多数功能的入口,例如:会员注册、登录,管理员登录,查询等。会员登录主要是将用户输入的用户名和密码与数据库中my_users表中的已有的信息进行比对,如
27、果完全一样,则是合法用户,可以成功登录,如果不一样,则登录失败。查询功能是通过输入商品名称关键字和下拉菜单中商品类别进行查询提交查询信息以后由find.Jsp显示查询结果。此功能未注册用户也可用,但是所查询商品不提供购买功能。4.2 具体模块实现4.2.1 商品查看此功能模块由buy.jsp来实现。当用户进入购物中心以后,系统会显示所有的商品基本信息。但在商品数量过于庞大以后则不容易查看所需商品,所以系统提供了按类别查询的功能。下拉菜单中有商品的所有类别,用户根据类别以post方法传递表单。再在该页设置接收字段:String bookclass=codeToString(request.get
28、Parameter(bookclass);通过关键字bookclass对数据库商品表my_goods进行查询:SELECT * FROM my_goods where goodsclass=+bookclass.trim()+这样就比较清楚的可以获得各类别的商品的信息。有了自己需要购物的商品,则可以通过点击购买将商品添加到购物车,详细信息可以查看商品的详细信息。详细信息页面xiangxi.jsp通过商品ID查询数据库,除了显示以上信息以外,还显示商品数量,备注等信息。界面如下图:图4-2 商品信息为了不让庞大的数据让人看得眼花缭乱,在商品的实现时是分页显示,每页显示5项记录。分页代码如下:in
29、t dipage=1;/当前页码数默认为1String pages=request.getParameter(dipage);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/countPag
30、eRecord; else countPage=countRecord/countPageRecord+1;/把记录指针移至当前页第一条记录之前 if(dipage-1)*countPageRecord=0) rs.beforeFirst();4.2.2 购物车此功能模块由:buybook2.Jsp,addgoods.Jsp,minusGoods.Jsp,deleteGoods,buy.java来实现。当用户选定某样商品并在登录后的情况下,可以点击购买将商品添加到购物车。在购物车中可以设置购买商品的数量。设置好数量以后按提交按钮根据商品唯一ID将商品添加到购物车。在addgoods.jsp中通
31、过获取商品ID:String id=request.getParameter(id);Int 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页面以后,如果用户不满意该选择可以删除或者更
32、改所选商品数量,更改商品数量是通过buycar.Java和minusGoods.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);用户在确定需要购买以后,就可以提交购物车,完成购物功能。图4-4 购物车购物车中商
33、品总价格totalprice是通过商品单价和数量进行结算。代码如下: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.get
34、String(indentno)+用户也可以通过查询指定的定单ID来查询想要知道的定单的信息。通过sqlString=delete from my_indentlist where id=+ID;语句删除以前的定单。管理员管理定单除了拥有用户管理定单的功能以外,还可以通过定单ID更新定单的状态,修改定单的付款状态以及发货状态。修改定单页面change.jsp.通过获取定单ID,用update语句更新定单信息。定单管理界面如下图:图4-5查看当前订单定单查询代码如下:SELECT * FROM my_indentlist where username=+username+4.2.4 用户个人信息
35、管理此功能模块由reg.Jsp,log.Jsp,changemima.Jsp,psxinxi.jsp来实现。分别别实现用户的注册以及密码的修改。Psxinxi查看自己的基本注册情况。如下图:图4-6查看用户自己基本情况用户点击“个人信息”以后系统就会查询数据库my_users表显示当前用户信息。由于整个用户页面都用session变量控制访问权限,所以在进行查询的时候就根据seesion变量中的username对数据库进行查询,查询代码如下:rs=sql.executeQuery(SELECT * FROM my_users where username like %+username.trim
36、()+%);reg.Jsp用来注册用户的基本信息,包括用户名,用户密码,性别,电话,地址,邮编,Email等基本信息。为了系统用户名和密码等的合法化,系统通过function on_submit()函数来控制输入,如果为空则提示用户名为空返回重新输入。示例代码如下:if (form1.username.value=)alert(用户名不能为空);同时为了保证输入合法化如Email这样的信息,系统通过判断语句来确定输入是否合法,示例代码:if(form1.email.value.length!=0) for(i=0;iform1.email.value.length;i+) if(form1.e
37、mail.value.charAt(i)=) break;if(i=form1.email.value.length) alert(非法EMAIL地址);在通过基本信息输入以后,系统将信息传递给log.Jsp进行处理,log.Jsp首先用字符串接收函数:String username=codeToString(request.getParameter(username);来接收reg.Jsp提交的信息。然后通过数据库执行SQL语句insert将数据写入数据库中,如果注册成功则跳转到首页,如果注册不成功,则通过:out.print(注册不成功,请检查必添项目);提示输入不成功。 changemi
38、ma.Jsp用来修改用户的密码信息,用户在登录以后点击修改密码的链接可以对密码进行修改。在输入两次密码时需要用到两次输入密码正确与否的判断:if (form1.passwd.value!=form1.passconfirm.value)alert(确认密码不相符!);判断合法以后,就可以访问数据库通过update语句来更新用户密码信息。图4-7 用户注册信息4.2.5 用户控件此功能通过来实现,避免简单代码的重复编写,也达到美观实用的效果。4.2.6 商品管理此功能是通过booklist.Jsp和addbook.JsP,addbooklog.Jsp,delcord.jsp来实现addbook.
39、Jsp主要是用来添加商品的信息,包括商品名称,销售员,厂商,编号,价格,数量等信息。在下拉菜单中可以选取商品的类别进行分类添加。写好添加的商品信息以后将表单数据传递给addbook.Jsp对数据进行处理,通过addbooklog.Jsp的insrt语句将表单数据写入数据库。具体代码如下:String bookname=codeToString(request.getParameter(bookname); if(bookname=null) bookname=;String sqlstring=null; sqlstring=insert into my_goods(goodsname,goo
40、dsclass,seller,provider,goodsno,content,price,amount)+ values (+bookname+,+bookclass+,+author+,+publish+,+bookno+,+content+,+price+,+amount+);/数据库连接代码st.executeUpdate(sqlstring);完成操作以后如果操作成功则跳转到管理员主界面,此时可以通过查看商品信息来查看刚才添加的商品,如果操作失败则会跳转到ERROR。HTM页面提示操作失败,可以返回添加页面重新对商品进行添加。booklist.Jsp主要是查看所有商品的信息,以及删除
41、商品。在点击删除按钮以后,系统将商品唯一ID传递给delcord.Jsp。delcord.Jsp通过getParameter(id)接收ID以后,根据ID在数据库中用delelte语句删除该记录。操作起来十分方便和快捷。具体删除代码:id=Long.parseLong(request.getParameter(id);sqlString=delete from my_goods where id=+id;/数据库连接执行删除语句sql.executeUpdate(sqlString);商品添加页面如下图:图4-8 添加商品4.2.7 管理用户此功能模块由userlist.Jsp,deluser
42、cord.Jsp来实现。userlist.Jsp用来查询所有用户的信息,同样用分页显示的方式将信息显示出来,如果有需要删除的用户,则通过传递用户ID到delusercord.Jsp。delusercord.Jsp在接收到用户ID以后,通过访问数据库运用delete语句删除选定用户记录。具体删除语句如下:%/接收要删除的用户ID号 long id; try id=Long.parseLong(request.getParameter(id);if(id!=0)/接收到的参数正确 sqlString=delete from my_users where id=+id;sql.executeUpda
43、te(sqlString); con.close();删除成功以后跳转到userlist.Jsp页面重新查询所有用户。如果删除失败则通过:out.print(删除失败);提示删除失败。图4-9 用户管理5. 系统测试5.1 前台测试完成了系统主要模块的开发后,系统需要进行必要的运行测试,以检验系统的正确性,以下将按照用户购买商品的流程和管理员对主要信息的管理来测试系统。首先来到前台用户的登陆界面,先注册一个用户名为wang 的新用户,填写相关资料后,点击确定后,注册成功跳转到主页面,在测试中发现不同用户可以注册相同的ID,显然这在实际应用中是不现实的,后来在代码中添加查询比较代码,通过比较注册
44、用户名和数据库中的用户名来判断该用户名是否有效来解决这个问题。注册成功以后回到主页登录,进入用户界面。点击商品查询以及购物等页面基本正常,但是在测试过程中发现了非常严重的问题,有的页面本来应该在登录以后才能访问,比如查看自己定单以及购买商品等注册登录用户的页面。而在不用登录直接在IP地址栏输入地址也可直接访问。这显然是不现实的。于是运用控制变量session来解决了这个问题,添加如下代码:登录页面添加的代码:session.setAttribute(username,codeToString(username);访问控制页面添加的代码:String username = (String)ses
45、sion.getAttribute(username);if ( username = null | username.equals() )response.sendRedirect(error.htm);以此来解决访问控制的问题,添加代码以后如果直接输入地址则会跳转到error.Htm页面提示没有登录,要求返回登录页面登录以后访问。5.2 后台测试当点击管理员登录按钮时,就来到管理员管理登陆页面,当我们不输入用户名而直接点击提交时,系统会提示请输入用户名错误。这个在前台用户登陆中也同样设置了相应的验证。输入正确的用户名和密码后,便可以进入系统可以进行管理了,首先我们测试添加新商品,正确填入商品信息并提交后,系统会提示添加成功,通过打商品查看的页面可以查看到,因此证明添加成功。对商品的删除更为简便,只要在选择商品类别和商品型号后,只要点击“删除”就能够成功实现操作。对于用户管理,管理员查看当前所有用户的相关信息,并且能够删除带有不良企图的非法注册用户的ID,操作起来简便、快捷。在测试的过程中同样发现和用户模块相同的致命性错误,就是可以直接通过地址栏而不需要验证就可以具备管理员权限。这是一个相当大的漏洞。最后也通过session变量得以解决这个问题。
限制150内