信息系统分析与设计的课程设计(基于JSP技术的网上书店)_第1页
信息系统分析与设计的课程设计(基于JSP技术的网上书店)_第2页
信息系统分析与设计的课程设计(基于JSP技术的网上书店)_第3页
信息系统分析与设计的课程设计(基于JSP技术的网上书店)_第4页
信息系统分析与设计的课程设计(基于JSP技术的网上书店)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录中文摘要 2外文摘要 2中文关键词2英文关键词21 选题背景42 程序开发的基础技术52.1 HTML语言52.2 JavaSCRIPT语言62.3 JSP概述62.4 JSP工作原理72.5 JSP的发布82.6 SQL语言简单介绍82.7 JDBC技术介绍93 需求分析93.1系统说明93.2 可行性分析103.3 系统功能简介103.3.1 基本功能103.3.2 用户界面设计113.4 系统运行环境114 系统设计124.1 系统设计思想124.2 系统功能模块化134.3 数据库设计134.3.1 数据库需求分析144.3.2 数据库概念结构144.3.3 数据库逻辑机构设计15

2、5 详细设计165.1 系统概述165.3 系统主要文件175.3 详细代码及说明17实现用户实体的Bean18实现图书实体的Bean205.3.3 实现订购单实体的Bean225.3.4 实现购物车实体的Bean235.3.5 实现购物实体的Bean245.3.6 前台运行程序cart.jsp296 总结35基于JSP技术的网上书店According To The Technical On-Line Book-Shopping System Of JSP学生:0000 科技学院指导老师:汪静 经济与管理学院【摘要】网上书店的建设实现了对商业零售企业提供信息化管理。建立了企业对消费者(B2C)

3、的网络销售系统。着重论述了系统功能与实现,数据流程及存储,包括图书目录,用户注册,网上订货与购物,图书查询,后台数据库管理等。运用HTML语言,JavaScript技术,JDBC,JSP与后台数据库MY SQL 链接等关键技术建设网上购物系统。本系统具有比较完善的后台管理系统和前台购物系统,后台管理系统使用者为系统管理员,主要完成:公告管理,图书管理,订单管理,用户管理,系统管理功能。前台购物系统使用者为顾客用户,主要完成:浏览公告,浏览图书,查询图书,购买图书,用户注册功能。本系统唯一不足之处在受网上银行的限制,无法完善在线付费系统。【Abstract】The construction of

4、 the on-line shopping system carries out to retail the business enterprise to provide the information-based management to the business. Built up the business enterprise to the network sale system of the consumer (B2C).Emphasized to discuss the system function and realizations, the data process and s

5、aving, include the catalogue, the customer register, ordering on the net with shopping, merchandise search, the backstage database management etc. Make use of the language of HTML, technique of JavaScript, JDBC, the JSP and backstage database chains connect to wait the on-line shopping system of the

6、 key technique construction. This system has the more perfect backstage management system and the stage shopping systems, the backstage management system user is a system managing person, mainly complete: Announce the management, the merchandise management, order management, customer management, sys

7、tem management function. The stage shopping system user is the customer customer , mainly completing: Browse to announce, browse the merchandise, search the merchandise, purchase the merchandise, the customer registers the function. Unique shortage of this system of be placed in to be limit by the o

8、n-line bank, can't be perfect and on-line to pay the system.【关键词】B2C ,JSP, 数据库, JDBC【Key Words】Business to Customer , JAVA Sever Pages , Database , JDBC前言近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。网上书店作为B2C (Business to Customer,即企业对消费者)电子商

9、务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信是指那些不经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如图书报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划。每一个细小的环节都和重要。这样才能使得在电子交易时避免不必要错误发生。我们将使用HTML、JSP等技术来编辑网页,并运用J

10、SP技术把数据库和动态网页相关联。传统的管理信息系统信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本系统在实际应用开发中解决方案是建立网站,  以及自己的数据库,使得所需图书信息可以及时的保存、更新。可以更好的及时了解图书买卖的情况。JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP时代,JSP即Java Server Page,它可以在Servlet和JavaBean的支持下,完成功能强大的

11、Web应用程序。所以,在我的课程设计中,我采用了JSP作为开发工具,构建了一个能实现简单的电子商务的小型动态商务网站网上书店销售系统。该系统能实现用户的注册、登录功能;能够实现图书的查询,订购等功能。该系统基本上具备一个网上图书销售系统应该具备的功能,该设计项目基本上体现了构建一个动态商务网站所需要的技术,可以说,目前的大型商务网站也就是我们这个小型网站在内容上的扩充和重复。通过这次的课程设计,我了解了目前流行的动态商务网站的构成和运作原理,掌握了用JSP构建动态网站的相关知识和技术原理,锻炼了自己的动手实践能力。更重要的是,通过这次的课程设计,我培养出了刻苦钻研的学习精神和严肃认真的学习态度

12、,这对我以后的学习和工作有很大的益处。在这次课程设计过程中,我得到了指导老师汪老师和其他同学的悉心指导。在此,我对他们表示衷心的感谢!1 选题背景电子商务(E-COMMERCE或E-BUSINESS)是信息时代商业模式的实质性变革,是未来贸易发展的方向。其实施牵涉社会信用体系,法律环境,经济次序诸方面,是一个与社会大环境息息相关并独具完整结构体系的系统工程。电子商务网站(网站商场)是整个电子商务的一个组成部分,它与传统商务相比具有5方面主要优势。(1)无需店铺租金等,能使营业成本大大低于传统商店。(2)采用"零库存"管理方式,可大大缩短资金的周转周期。(3)互联网商务更有利

13、于开拓全球市场。(4)实现24小时不间断营业,有利于提高营业额。(5)可使用多媒体手段进行促销活动,可依靠客户数据库提供全新个人服务。随着计算机与通信技术的飞速发展,电子商务的开展势在必行。进入90年代以来,随着计算机网络技术发展与应用的极大突破,企业利用互联网争夺新市场,进行电于商务活动的越来越多,并又绝大多数获得了较好的经济效益,建立一个好的网站正越来越受到企业的重视和关注。网络技术的飞速发展,给世界创造了巨大的信息财富,全球经济的延伸,使人类产生了广泛交流的强烈愿望。面对电子商务的波澜浪潮,各个大小商业网站应运而生。据统计,国内的电子商务网站已由1999年的200家发展到现在的600家,

14、并以平均每天开通两家商务网站的速度递增。电子商务网站的起步与发展,改变了传统的经营运作模式,为信息共享和信息协作提供了无限空间。同时,如何为电于商务网站提供独立,客观和公正的审计和签证,也将成为注册会计师谈论的热门话题。电子商务是21世纪经济发展的引擎,商务活动在21世纪将进入电子商务时代,发展电子商务是大势所趋,是社会发展的必然,据预计,2004年全球电子商务市场将从1999年的1513亿美元增长到7万亿美元。而中国的电子商务交易额2000年底将达到8亿美元,到2002年将增长到100亿美元。作为一种全新的商务方式,电子商务带来了更多的商业机会。要在新的商业机会中赢得市场,就必须开展电子商务

15、。电子商务包括信息流,资金流和物流3大要素,因此,包括信息和资金流的商务网站的建设在电子商务体系中有着重要的地位。电子商务是internet发展的直接产物,是网络技术应用的全新发展方向。internet本身具有的开放性,全球性,低成本,高效率的特点,也成为了电子商务的内在特点,并使得电子商务大大超越了作为一种新的贸易形式历具有的价值,它不仅会改变企业本身的生产,经营,管理活动,而且还将影响到整个社会的经济运行与结构,但是,要实现完整的电子商务不仅涉及到卖家和买家,还会有金融机构,政府机构,认证机构,配送中心等机构的加入,由此而涉及到网上银行,在线支付等条件的成熟和数据加密,电子签名等安全技术的

16、完善,所以,要建立一个比较完善的电子商务网的并不随急于求成,必须要对电子商务有一定购认识和了解。还必须进行严密的策划和准备,这样才能使电子商务尽快完善,尽早收益。电子商务经过一段时间的概念疯妙,浓雾渐渐散开,不仅冤大头似的投资商开始清醒(不是听个故事就扔钱,而是要看是否有赢利了),商务网站本身也开始考虑如何经营,亟需解决安全"着陆"的问题。4月2日,来自全国各地的100多家互联网企业的老总们齐聚北京,参加"中国互联网商业应用策略联盟高级论坛",共同研讨中国互联网的商业应用课题。其中涉及的许多问题是原先人们不愿或忌讳谈及的,仅从敢于正视电子商务网站面临困难

17、这一点来看,这就是一个了不起的进步。去年早些时间,还有人为是电子商务还是商务电子而争论,现在,摆在人们面前的则是如何解决电子商务的信息流,资金流和物流配送的实际问题了。要用经营企业的模式来经营网站,已成为越来越多商务网站经营者的共识。所谓电子商务,说白了就是利用互联网来做生意。在传统企业由于种种原因还弄不清楚互联网是什么的时候,一群IT业界的精英首先看到了互联网带来的商机,于是纷纷建网,做起了网络发财梦。当1998年希望做中国雅虎的"门户网站"梦破灭后,1999年"电子商务网站"又遍地开花,以为在网上做个网页,放上些图书名称就是电子商务了。谁知,这条路比

18、"门户网站"难度更大。2 程序开发的基础技术2.1HTML语言HTML(Hyper Text Markup Language 超文本标记语言)是一种用来制作超文本文档的简单标记语言。与常见的字处理文件不同,Web页以超文本标识语言编排格式。HTML文件是带有特定HTML插入标记的用以编排文档属性和格式的标准文本文件。它能独立于各种操作系统平台(如UNIX,WINDOWS等)。自1990年以来HTML就一直被用作World Wide Web上的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。HTML文档(即Homepage的源文件

19、)是一个放置了标记的ASCII文本文件,通常它带有.html或.htm的文件扩展名。生成一个HTML文档主要有以下三种途径:1. 手工直接编写(例如用你所喜爱的ASCII文本编辑器或其它HTML的编辑工具)。2. 通过某些格式转换工具将现有的其它格式文档(如WORD文档)转换成HTML文档。3. 由Web服务器(或称HTTP 服务器)一方实时动态地生成。一般的HTML页面具有如下的结构:<html><body>这是HTML正文部分</body></html>可见在一个HTML网页文件中,一般必须有一对html标记作为文件的开头和结尾,在标记后是头

20、部标记,其后是实体标记。2.2JavaSCRIPT语言JavaScript脚本语言脚本是应用程序在网页上表达的语言,可以将脚本嵌入Web页中。通常脚本在服务器上运行,但也可以采用客户端和服务器端结合使用JavaScript是JSP的默认脚本语言.2.3JSP概述Java Server Page(简称JSP)是基于Java的技术,用于创建可支持跨平台及跨Web服务器的Web服务器端应用程序(即所谓的动态网页)。它是由Sun Microsystem公司倡导,由多家公司合作建立的一种动态网页技术标准.JSP正式发布于1999年6月,是基于Java Servlet以及整个Java体系的Web开发技术。

21、在传统的网页(即扩展名为 .html的文件)中加入Java程序片(Scriplet)和JSP标记(tag)即可构成一个常规的JSP网页(其扩展名为 .jsp)。目前的Java2 platform Enterprise Edition(简称J2EE),是Sun公司为企业级应用建立的高水准的结构,它获得了各大开发平台提供商的积极支持,并已成为当今企业应用开发的主流平台。JSP是J2EE平台上的一个组件,由于JSP技术被设计成独立于平台和服务器,因此可以利用这一技术建立先进、安全和跨平台的网站。2.4JSP工作原理在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而

22、这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLETjspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同

23、时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。 如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。 虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。 此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。当这种情况发生时jspDestroy

24、()方法首先被调用, 然后servlet实例便被标记加入"垃圾收集"处理。 jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的源。 缺省情况下:服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上: 该JSP网页已完成信息的 输出缓冲区已满 JSP中调用输出缓冲区的大小可以用:设置输出缓冲区的大小为1KB。设置输出缓冲区的大小为0

25、,即不缓冲。用response.isCommitted()可检查看服务端是否已将数据输出到客户端. 如果返回值是TRUE则已将数据输出到客户端,是FALSE则还没有.有以下3种方法可以做到输出向该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容.下面的方法也能改变HTTP HEADER属性,它的原理和 1 是一样的.采用<JSP:FORWORD> 该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<JSP:FORWORD>之前有很多输出,前面的输出

26、已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。2.5JSP的发布当编辑好JSP文件后,必需发布后才能实现其功能,JSP文件本身并不能运行。我们用Tomcat来发布JSP文件。2.6 SQL语言简单介绍SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracl

27、e, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create 以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。select语句中位于from关键词之后的表格名称用来决定将要进行查询操作的目标表格。除了上面所提到的运算符外,LIKE运算符在where条件从句中也非常重要。LIKE运算符的功能非常强大,通过使用LIKE运算符可以设定只选择与用户规定格式相同的记录。2.7JDBC技术介绍许多开发者和用

28、户都在寻找Java程序中访问数据库的便捷方法。由于Java是一个健壮,安全,易于使用的,易于理解且可以从网络中自动download ,所以它成为开发数据库应用的一种良好的语言基础。它提供了C,C+,Smalltalk, BASIC, COBOL, and 4GLs的许多优点。许多公司已经开始在Java与DBMS的连接方面做工作。 许多Java应用开发者都希望能够编写独立于特定DBMS的程序,而我们也相信一个独立于DBMS的接口将使得与各种各样DBMS连接变得最为便捷,开发更加迅速。所以我们认为定义一个通用的SQL数据库存取框架,在各种各样的提供数据库连接模块上提供统一的界面是十分有意义的。这使

29、程序员可以面对单一的数据库界面,使数据库无关的Java工具和产品成为可能,使得数据库连接的开发者可以提供各种各样的连接方案。我们看到我们定义一个通用低层的,支持基本SQL功能的JavaDataBase Connectivity (JDBC)API的紧迫任务。 JDBC API得到数据库开发厂商,连接开发厂商,ISV,以及应用开发者的支持是十分重要的。我们相信把我们的工作建立在ODBC抽象层的基础上将JDBC更加容易得到大家的接受。而且从技术上来说,ODBC是我们设计工作的一个良好基础。 因为ODBC是一个C语言接口,所以ODBC在Java中直接使用不适当。从Java中来调用C代码在安全性,健壮

30、性,实现的方便,可移植性等等方面有许多不便。它使得Java在这些方面的许多优点得不到发挥。3需求分析3.1系统说明本系统是一个中小型的电子商务系统-网上书店,可以为各类用户提供方便的在线买书环境,符合目前国内流行的电子商务模式。用户可以在系统中实现注册、浏览图书、搜索查询图书、下定单、处理定单等功能;管理员可以通过用户管理、定单管理、图书管理、评论管理等管理功能来对系统进行维护更新。网站的组成有以下几个子系统组成:1. 主页,显示欢迎界面,提供近期的书本。2. 购物车,处理订购并显示想要订购的书本。3. 查询系统,通过书本编号、书本名称来查询是否有自己需要的书本。4. 用户注册系统,处理新用户

31、的注册和老用户买书时的确认。3.2 可行性分析1.技术可行性。根据已有的计算机平台和开发环境,已充分具备开发该系统对计算机软硬件、数据库和开发工具的要求。只要利用好已有的参考资料,结合好已学的计算机专业知识,投入大量的时间,完成该系统虽有困难,但是是可行的。2.经济可行性。网上购物系统不需要投入大量的人力、物力和财力,成本很低,但是一旦实现却能在生产实际中发挥着极其重要的作用,为我们的社会生产节省巨大的人力、物力和财力,相应会带来良好的经济效益,所以应鼓励软件开发人员积极开发。3.使用可行性。该系统开发完成后将具有易使用,易理解,易维护等特性,对计算机操作人员的计算机水平要求不高,可以很方便的

32、为使用者服务。3.3 系统功能简介 基本功能l 游客可以浏览网站l 用户登陆l 用户能够浏览网站l 提供搜索引擎,使用户能够按特定的条件对所需图书进行搜索l 用户下定单购买图书l 用户处理定单 用户界面设计3.4 系统运行环境操作系统:Windows 9X、Windows NT Workstation/Server 4.0以上、Windows 2000 Server/Professional、Windows XP Professional。CPU:没有很高的要求,只要能够顺利运行Windows系列操作系统就可以了。当然,CPU的处理速度越快,运行JSP代码的效率越高。内存:最低配置32MB,建

33、议使用64MB以上内存,如果使用Windows 2000或Windows XP建议使用128MB以上内存。硬盘空间:至少需要50MB以上的硬盘空间来安装所需的组件。运行JSP的服务器端要求:(如表2.1所示)表2.1操作系统需要安装的J2SDK TomcatWindows 98J2sdk-1_4_1_01 Tomcat 4.0以上Windows NT 4.0 ServerJ2sdk-1_4_1_01 Tomcat 4.0以上Windows 2000J2sdk-1_4_1_01 Tomcat 4.0以上Windows XPJ2sdk-1_4_1_01 Tomcat 4.0以上4系统设计4.1 系

34、统设计思想本系统采用三层架构设计,它的工作原理如图3-1所示。图3-1采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。4.2 系统功能模块化如图3-2为本系统的功能模块图。用户登录在线购书察看图书详细购买图书查询察看订单信息查看购物车在线购书购买察看图书详细资料购买查看订单详细继续购书清空购物车提交购物车删除已经选购的图书修改购买数量图3-24.3 数据库设计数据库在一个信息管理系统中占有非常重要的地位

35、,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。 数据库需求分析针对一般在线书店的需求,得出如下需求信息。§ 用户分为游客和已注册用户。§ 订单分为单张详细订单和总订单。§ 一个用户可以购买多本图书。§ 一个用户对应一张订单。§ 一个列表对应多张订单。针对本系统功能分析,总结出如下的需求信息。§ 用户,包括数据项:用户ID、用户名、密码。§ 图书,包括数据项:图书编号、图书名、价格、图书介绍。§ 订单列表,包括数据项:订单编号、

36、图书编号、购书数量。§ 订单,包括数据项:订单编号、用户编号、下单时间。 数据库概念结构从本系统中规划出的实体有:用户实体、图书实体、订单实体、订单列表实体。实体之间关系的E-R图如图3-3所示。购书用户订单列表订单图书 1 N M N 1 L N图3-3用户信息实体的E-R图如图3-4所示。图书实体的E-R图如图3-5所示。订单实体的E-R图如图3-6所示。订单列表实体的E-R图如图3-7所示。 数据库逻辑机构设计在线书店数据库中各个表的设计结果如下面的标和所示。表3-8为图书信息列表。表3-8表3-9为用户信息列表。表3-9表3-10为订单总表,记录某个用户的订单信息。表3-10

37、表3-11为订单表,记录但张订单的具体信息。表3-115详细设计5.1 系统概述我设计的这个系统是一个由JSP实现的网上购书系统。它实现了基本的登录验证、查询图书、分页处理、购物车处理以及订单处理功能,其主要界面见图4-1:图4-15.3 系统主要文件这个购书系统主要有2类文件,一类是Bean文件,我把它们统一放在了cart文件夹里,保存在jakarta-tomcat-commonclassescart下,(这是tomcat要求的默认存放Bean的路径);另一类是jsp文件,保存在jakarta-tomcat-5.0.27webappsROOT。(这是tomcat的默认工作环境)Bean文件:

38、CartManager.java,OrderEntity.java,OrderItemEntity.javaProductEntity.java,UserEntity.javaJsp文 件:cart.jsp5.3详细代码及说明实现用户实体的Bean1)用户作为实体,我把他的id, 姓名,密码作为其属性在Bean里面做了定义,它们都是和数据库里的user表相对应的,在这个Bean里封装的方法也主要是对这个表进行操作.这个几个属性都被定义为类的私有成员,外界不可访问private String id;private String userName;private String userPasswo

39、rd;2)构造函数里做了2件事情,第一:寻找数据库连接驱动;第二:对上面的3个私有成员初始化:public static String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver"public static String sConnStr = "jdbc:odbc:cart"public static Connection conn = null;public UserEntity(String id,String userName,String userPassword)try Class.forName(sDB

40、Driver); /采用Class.forName方法显式加载一个驱动程序 catch(java.lang.ClassNotFoundException e) System.err.println("UserEntity: " + e.getMessage();this.id=id;this.userName=userName;this.userPassword=userPassword;根据上面对变量sDBDriver ,sConnStr的定义和初始化可以看出,我在连接数据库的时候采用的是jdbc-odbc桥的方式,这种方式采用的驱动是JDK自带的,不需要另外安装。但是,

41、为了与特定的数据库连接,我们必须建立一个数据源:cart。给3个属性赋值,我利用了this指针。3)这个类我封装了2类方法:一是查找特定用户名的所有记录,代码如下:public static UserEntity queryUser(String userName) throws SQLExceptiontry Class.forName(sDBDriver); catch(java.lang.ClassNotFoundException e) System.err.println("UserEntity: " + e.getMessage(); /query from d

42、atabaseString sql="select id,user_name,user_password from user where user_name= ? "ResultSet rs = null;try conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql);prepStmt.setString(1,userName);rs = prepStmt.executeQuery(); catch(SQLException e

43、x) System.err.println("OrderItemEntity executeQuery: " + ex.getMessage();UserEntity user=null;if(rs.next()user=new UserEntity(rs.getString(1),rs.getString(2),rs.getString(3);return user;这个函数有1个参数,String userName,就是通过这个用户名在user表里查询相应的用户的。要查询数据库里user表,就必须先连接数据库。连接数据库第一步是加载驱动,之后就是进行连接。我采用Driv

44、erManager类的getConnection方法来建立与cart数据源的连接,连接成功后,返回一个Connection类的对象conn.要查找特定用户名的纪录,其实就是对uesr进行查询操作。PreparedStatement对象就是用于查询语句的执行,它是Statement的子类,与Statement不同的地方,PreparedStatement对象可以接受参数,这里需要接受的参数是user_name,然后进行预编译。在每一次执行这个查询,都可以给sql语句传输不同的user_name,这样大大提高了灵活性。要想查询后的结果最后显示给用户,必须对ResultSet对象进行操作,即对rs进

45、行操作。我在程序里是把该记录赋给一个UserEntity对象。该类封装的另一种方法是:用户名和密码的获得。这个主要是为了方便后面验证用户合法性使用public String getUserName()return userName;public String getUserPassword()return userPassword;5.3.2实现图书实体的Bean虽然我做的是一个购书系统,但考虑到系统的可扩展性,我把书当作一种图书来进行定义。同样,参照数据库里的product表,我给图书这个类定义了如下4个属性,图书id,图书名称,图书价格,图书note,其类型同样是该类的私有属性:priva

46、te String id;private String productName;private String productPrice;private String productNote;1) 其构造函数和用户实体类基本上一致,所以代码及其说明我在这里就省略了。2) 对图书的操作也主要是2类,一类是对特定图书的查询,其原理和查询用户是一样的,但是有一点小小的区别,即查询图书可以使查询所有的图书,或者是查询特定id的图书,我通过以下代码把这2种查询合在了queryProduct这个函数里:String sql="select id,product_name,product_price

47、,product_note from product "if(productIpareTo("")!=0)sql=sql+" where id = ? "Vector v=new Vector();ResultSet rs = null;其关于连接数据库,查询记录的代码和上面的大致雷同,所以在这里就省略了。显示图书是分页显示的,其代码如下:while(rs.next()+i;if(i>pageCount*pageSize)if(i<=(pageCount+1)*pageSize)v.add(new ProductEntity(rs.

48、getString(1),rs.getString(2),rs.getString(3),rs.getString(4);elsebreak;这一段代码的主要功能是:每一页最多显示pageSize个图书,如果超过pageSize个,就分页显示。PageSize在后面将会定义,其值我设置为10。3) 第二类方法是查询图书的id,全称,价格和note. 例如查找图书的ID:public String getProductId()return id;5.3.3 实现订购单实体的Bean客户每次购买一种图书都会产生一次订购单,它包括订单号,所购买的书号,所购买这种书的数量,这些构成了这个类的私有属性:

49、private String id;private String orderId;private String productId;private String productNum;1) 客户每次选中一种图书后,点击放入购物车,就会产生一个订单,其实现代码如下:String sql="insert into order_item(order_id,product_id,product_num) values(?,?,?) "ResultSet rs = null;try conn = DriverManager.getConnection(sConnStr); Prepa

50、redStatement prepStmt = conn.prepareStatement(sql);prepStmt.setString(1,orderId);prepStmt.setString(2,productId);prepStmt.setString(3,productNum);prepStmt.executeUpdate();订购单,书号,购买数量都是作为参数传过来的。很明显,新建一张订购单其实就是在order_item表里插入一条新纪录就可以了。其原理已经在上面说过来了,就不在此重复了。2)在后面的购物车里,一名顾客的最终消费总额就是根据这里一张张的订购单得到的,所以查找特定订

51、单号的订购单是这个类里面不可缺少的方法,它的算法实质上就是条件查询,和前面的无条件查询相比,我只把sql语句作了改动:String sql="select id,order_id,product_id,product_num from order_item where order_id= ? "2) 第3个被封装的方法是设置,获得订购单号,书号,定购数量,并且还可以获得session price.5.3.4 实现购物车实体的Bean在现实生活中,人们去超市买东西,都是把图书放在一个购物篮里,等到把所有要买的东西选购完毕后,一起拿到收银台前付钱。我在程序里定义的购物车实体就是

52、模拟这个功能.作为购物车,购物人,购物时间,所购书的总价格都是必不可少的:private String id;private String userName;private String orderDate;private String orderPrice;我觉得在这个Bean里面主要要解决的一个问题,如何解决一个新的购物车。当一个顾客买完书提交购物车后,我们必须插入一个新的购物车纪录,这是由insertOrder()方法来实现的:其插入代码如下:conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt

53、= conn.prepareStatement(sql);String curDate=(java.util.Calendar.getInstance().getTime().toString();prepStmt.setString(1,userName);prepStmt.setString(2,curDate);prepStmt.setString(3,orderPrice);prepStmt.executeUpdate();这里,插入的原理和前面是相同的,但是有一个地方需要解释:即购物时间字段,是采用的java.util.Calendar.getInstance().getTime()

54、,这是一个库函数,被封装在java.util,在这个类定义的开头,我把这个库文件包含进来:import java.util.*;这个方法返回的结果必须把转化成String,否则后面插入数据库时会出现类型不匹配的错误。toString()就是用来实现类型转换的。为了方便后面对这个购物车进行操作,我在这个方法里还获得了该购物车的id: String selectStatement ="select id " +"from orderlist where user_name=? order by id desc " PreparedStatement prep

55、Stmt = conn.prepareStatement(selectStatement); prepStmt.setString(1,userName); ResultSet rs = prepStmt.executeQuery(); rs.next(); String result=rs.getString(1);return result;在sql里,查询特定用户购物车的id号,并且按照降序排列。是因为,针对一个网上购书系统,顾客可以多次在这里购书,那么在购物车表单里,针对一个顾客会有很多条他的购物纪录,而在数据库里,各条记录的id是安装时间先后顺序逐渐递增的,如果安装降序排列,那么得到的第一条记录则是最新插入的纪录。result=rs.getString(1)表示只把该条记录的第一个字段传给result,即把购物车的id号传给result。5.3.5 实现购物实体的Bean1)买书的第一步便是用户登录,现在购书网站都要求已经注册过的用户才能购买书籍,这样便于网站管理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论