毕业设计(论文)-基于Java的软件工程试验项目开发范例.doc_第1页
毕业设计(论文)-基于Java的软件工程试验项目开发范例.doc_第2页
毕业设计(论文)-基于Java的软件工程试验项目开发范例.doc_第3页
毕业设计(论文)-基于Java的软件工程试验项目开发范例.doc_第4页
毕业设计(论文)-基于Java的软件工程试验项目开发范例.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

- 51 -基于Java的软件工程试验项目开发范例-基于JSP技术的网络书店原型的实现The Development of Software Project Based on Software Engineeringwith Java-The Implement of eBookStore Demo Based on JSP 摘要本文将以在线电子书店为案例背景,详细介绍使用JSP(Java Server Page)技术实现一个小型商业模式的大致过程。特别是对使用JavaBean技术提高软件复用度和在线销售管理系统中的关键模块的实现策略进行了较为详细的叙述。关键词:Java, JSP, JavaBean, CookieAbstractBased on the case of ebookstore, this thesis introduced the procedure of implement a miniature commercial model with JSP(Java Server Page), and especially talked about improving the rate of programs reusing with JavaBean and the implement strategy of the key module in the online sale management system.Keywords: Java, JSP, JavaBean, Cookie前言我们的目的是使用软件工程方法探索开发一个软件项目,作为软件工程课程的范例,为今后的软件工程教学提供辅助。项目的基本需求是建立一个可以同时为顾客(读者)和书店经营者(管理员)在网络上提供服务的电子书店。从项目的设计到实现的过程中,我们致力于以下三个方面的尝试:l 软件工程方法的应用;l 软件产品的实用意义;l 面向对象思想的实践。我们的开发团队共有四个人,依软件设计,实现进行了不同的分工。我们设计出了原型,基本型,扩展型三种网站结构模型。其中我们实现了原型的全部功能。我主要负责网站原型的编码实现。本文将以在线电子书店为案例背景,详细介绍我们使用JSP(Java Server Page)技术实现一个小型商业模式的大致过程。特别是对使用JavaBean技术提高软件复用度和在线销售管理系统中的关键模块的实现策略进行了较为详细的叙述。此外本文还将把我们开发过程中的收获和经验作一阐述,我想着对我们以后的工作学习都是有着很多益处的。目录第一章引言- 41.1项目的意义- 41.2项目的描述- 51.3开发技术的选择- 61.4开发工具和运行环境- 7第二章项目相关知识介绍- 82.1 软件工程- 82.2 JSP- 82.3 JavaBean- 10第三章网站原型设计和具体实现策略- 113.1 网站原型的设计成果- 113.2 有关数据库设计的几点说明- 123.3 网站的关键部分实现策略- 13第四章JSP技术在网络书店开发中的应用- 154.1 JSP开发模型的选择- 154.2 使用JavaBean提高代码水平- 154.3 JSP中对COOKIE的使用- 194.4 JSP的中文问题的解决- 20第五章测试- 2151 网站测试- 21第六章结束语- 226.1 收获和体会- 226.2 项目的遗憾- 226.3 结束语- 23感谢- 24参考文献- 25附录- 26附录一:项目使用环境- 26附录二:电子书店安装和使用说明- 27附录三:源文件功能说明清单- 28附录四:源代码- 31附录五:翻译- 36第一章 引言1.1 项目的意义在计算机专业的教学中,软件工程是极为重要,也很特殊的一门课程。它需要学生有较好的计算机基础理论知识做基础,同时要具有探索精神和较强的动手能力;同时它也需要老师有深厚的实际开发经验和教学能力。它对我们的教与学的两方面都提出了较高的要求。很长时间以来,很多人都在对软件工程课程的教学进行了很多的尝试。我们的这个软件工程试验项目也正是在这方面的一种探索和研究。我们试图脱离陈旧的单纯理论讲授的教学方式,通过一个实际的软件开发过程,让学生在实际的应用环境中去学习,体会,理解理论知识。我们的这个项目就是要基于这个想法,设计一个适合要求的软件课题,并开发出适合不同水平同学的软件范例。我们想这有以下几个优点:l 软件开发过程中要用到大学一年级到三年级中的大部分课程的知识,符合软件工程课的综合性的特点。l 教学过程(也就是开发过程)接近实际需要,可以有效的弥补教学与实践的鸿沟,提高教学的质量。l 需要学生自学大量新技术,新的方法,对学生的自学能力和探索精神是一个很好的锻炼。l 开发项目需要一个团队共同完成,可以培养学生良好的团队合作精神。l 教学中对不同程度的同学提出了不同程度的目标要求,可以使各种水平的学生都能够在这个过程中得到提高,有所收获,这也符合“因材施教”的教育思想。既然是一次教学尝试,我们试图使用最新的技术和开发媒介来提高它的实用性和学生的兴趣。电子商务的发展和互联网的广泛应用给我们提供了一些很好的启发。我们知道,电子商务经过了一个“疯狂投资”的实验时代,现在已经进入了一个务实的阶段。当今电子商务发展的重心已经完全由过去的.COM的模式转向到传统企业的电子化的进程中来。人们已经不再为是否进行电子化而苦恼,因为电子商务的大势已经不可逆转。人们开始考虑应该从那里开始着手?哪些商业行为最适合首先电子化成了一个迫在眉睫的问题。一些系统架构师小心翼翼,广泛论证,在对企业自身运作机制的务实的仔细调研中,总结出了以下几种最有价值进行实施的电子商务应用:l 企业门户(Portal):企业门户与一般信息门户有本质的区别,企业门户主要是为企业的重要客户、合作伙伴和自身的员工服务的。它应当具有个性化(这里的个性化并不仅仅是页面),应当提供一系列的在线服务,使得客户、合作伙伴和员工们得以使用企业门户获得必要的知识/信息,得以通过企业门户与企业应用进行交互及事务处理。l 网上连锁商店(Storefront):为了拓展产品和服务的市场,拓广销售渠道以及增加销售额,企业应当建立具有自身品牌标识的网上连锁商店。这里需要注意的是,所谓网上连锁商店并不是说使用各种语言在各个国家分别建立网上商店,这只是其中的一个形式,更多的方式应当是将企业的网上商店能够加入到各种各样的网上实体中,比如门户网站、行业交易市场(e-Marketplace)、都市引擎等,使企业的销售渠道遍布整个Web空间。l 集团内联网(Intranet)与知识库(Knowledge Base):集团的全球内联网能够使企业的雇员可以在全球范围内进行有效的交流和协作,充分利用企业的全球资源,以提升整体的生产力。集团的知识库能够为员工的协作提供丰富有效的工作中所需要的知识,以最大可能地提高员工的单位产出。l 供应链(Supply Chain)管理:为提升企业的整体竞争力,企业往往需要保持并提升自身与其供应商的关系,采取流水线形式的采购方式并尽量减少运作成本,而要做到这一点,则必须要创建私有的交易通道和供应链关系的电子商务应用才能达到这一目标。l 客户服务(Customer Service):通过建立这样的面向客户的服务门户或自助式销售网站能够实现跨区销售,提升客户的亲近程度和满意程度,并减少服务成本。l 分销(Distribution)管理:建立分销管理应用能够使企业迅速地拓展分销渠道并挖掘新的市场机会。同时,企业还能裁减培训成本、服务成本和产品分销成本,并减少仓储费用。l 提供ASP(Application Service Provider)服务:通过在Web上部署ASP服务,企业能够获得新的额外的收入。而提供的ASP中的A(Application)应当是企业核心竞争力的数字化表现,一般情况下,其范围可能就包含了前面提到的6种电子商务应用中的5种:企业门户、网上连锁商店、供应链管理、客户服务以及分销管理。分析以上各种模式,不难看出数量众多的中小企业将在未来的电子商务中扮演重要的角色。一方面,它们凭借较小的规模,更灵活的经营模式,经过较小的投资就可以取得较明显的经济利益;另一方面,电子商务无疑为众多苦于受到大企业的长期垄断而发愁的中小企业指出的一条新路。只要它们把握好市场机会,找准自身的优势,在这场崭新的市场博弈中以弱胜强也不再是天方夜谭。我们的实验项目正是借此良机,以建立一个网上电子书店作为范例,这不仅在教学上有意义,而且也可以为中小企业的电子商务作了一些初步的尝试。1.2 项目的描述我们假定的本项目的需求方是一个小型的书店连锁店,目前依靠人工方式经营。它有着固定的进货渠道和稳定的顾客群,书店的经营业绩一直很稳定,但也一直没有突破。店主基于增加用户群和加强书店管理的考虑,决定购买一套电子书店的解决方案以使现有的销售模式最大程度的电子化。经过对连锁书店的传统商业模式的分析,我们发现连锁书店有以下的主要核心业务活动:l 售书(包括零售和团体订购)l 图书查询l 进书l 账务处理l 库存控制我们都有在书店买书的经验,这种传统的店面售书方式有以下几方面缺点:首先,这种模式销售受地域的限制明显,业务发展到一定程度就有了很难逾越的瓶颈;其次,对顾客的服务明显不足,用户获取图书的信息依赖于读者的主动购买行为,不能主动向读者“推”出销售的信息;再此,书店对顾客的消费行为缺乏有效的统计分析行为。不难发现,这中间的关键问题就是信息的问题。电子商务能很好的解决这一问题。针对问题,我们设计了以下几点改进:l 我们将在互联网架设电子书店系统,售书和管理全部电子化,同时扩大了书店服务覆盖面;l 我们为书店建立用户信息数据库,记录用户的一些对商家有用的信息;l 减少书店的售书和管理人员(我们的系统假设为一人),增加送书服务;此外我们还希望通过这个系统向客户提供几项服务功能:l 提供会员制服务l 更快捷的邮购服务l 更全面的实时图书信息查询我们希望在这种项目背景下,设计出不同程度的三种模型(原型,基本型,扩展型)。1.3 开发技术的选择几种流行的动态网页制作语言的比较现在Internet 越来越成为生活中不可或缺的一部分,制作网页的动态语言也越来越多,主要流行的有以下几种,ASP,PHP 和 JSP,他们之间互有优缺点,下面对它们作了一下比较浅显的比较。ASP 由于其简单功能实用等方面受到广大开发者的喜爱,再加上微软的强有力支持,可以说是时下做动态网站最为流行的语言,他借助微软的COM+ 技术,几乎可以实现在Client/Server间能够实现的所有功能,可以说确实具有相当的竞争力。ASP的代码实现也很简单,微软提供的InterDev 在RAD 的基础上,使Asp 的开发一夜之间火遍了大江南北。但是他的缺点是,由于微软自身利益,他只能运行在微软的平台上,因此在跨平台方面存在致命缺陷。PHP 则是秉承Linux 的GUN 风格,借助与源码公开,使他迅速成为世界上目前应用最为广泛的站点制作语言之一。借助与C+的形式,引用类的概念,使得代码的可重复性应用变的异常简单。加上他和Linux,Apache 和MySql 的紧密配合,关键性的应用也没有问题(有名的Sina就是采用Php)。但是他有一个比较大的麻烦,就是没有一个非常有实力的公司专门给他做支持。JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病-脚本级执行。Sun 公司借助自己在Java 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Jsp(Java Server Page)。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。下表是对三种技术的比较:表1-1三种常见的动态网页技术的对比表技术名称ASPJSPPHP对数据库的支持好好好开发难易程度容易容易不详使用平台Windows9X/NTWindows/UNIXUNIX(主要)安全性不好好不详对组件的支持支持支持不支持执行方式解释执行编译之后执行解释执行跨平台不好好好1.4 开发工具和运行环境开发工具:UltraEdit + Dreamweaver MX(另外JBuilder的帮助文档也是我受益匪浅)运行环境:Windows 2000 pro + Access XP + Resin2.0这里特别要指出的是在众多的支持JSP的服务器软件中,Resin的速度是编译运行速度是最快的,而且安装极其简单,这是我们选用它的主要原因。下图为Resin的运行界面。图1-1 Resin的控制窗口图1-2 Resin的运行窗口第二章 项目相关知识介绍这一章我们将对在本项目中使用的软件工程和JSP技术作一简介,如果您对这些比较熟悉,请跳过这一章。2.1 软件工程软件已经成为继与计算机的系统及产品的关键组成成分。在过去40年中,软件已经从特定的问题解决和信息分析工具演化为一门独特的产业。但早期的“软件设计”文化和历史产生了一系列至今还存在的问题,软件已经成为计算机系统演化过程中的阻碍因素。软件是由程序数据和文档组成。这些条目构成了软件工程过程中的配置项,而软件工程的目的就是为建造高质量的软件提供一个框架。简单的说,软件工程就是为了经济的获得可靠的和能在实际机器上高效运行的软件而建立和使用的好地工程原则。软件业的发展,使得传统的软件方法已经不适应软件的开发与维护的需要,迫切需要采用工程的概念、原理、技术和方法来规范软件的开发与维护过程。软件工程是一种过程化的技术。软件工程遵循七条基本原理:l 用分阶段的生命周期计划严格管理l 坚持进行阶段评审l 实行严格产品控制l 采用现代程序设计技术l 结果应能清楚的审查l 开发小组的人员应该少而精l 承认不断改进软件工程实践的必要性软件工程的传统途径:它使用生命周期方法学和各种结构分析和结构设计技术。一般来说,软件生命周期由软件定义、软件开发和软件维护三个时期组成。其中,软件定义时期又可分为问题定义,可行性研究和需求分析;软件开发时期又可以分为总体设计,详细设计,编码和单元测试,综合测试。根据这种基本原理,人们设计出很多适合不同情况的基本模型。其中使用最广的是瀑布模型和快速原形模型。我们在本次毕业设计中将采用快速原型法开发。2.2 JSPJSP技术的出现JavaServer PagesTM (JSP)技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。JSP规范是Web服务器、应用服务器、交易系统、以及开发工具供应商间广泛合作的结果。太阳微系统公司(Sun Microsystems Inc.)开发出这个规范来整合和平衡已经存在的对Java编程环境(例如,Java Servlet和JavaBeansTM)进行支持的技术和工具。其结果是产生了一种新的、开发基于Web应用程序的方法,给予使用基于组件应用逻辑的页面设计者以强大的功能。在开发JSP规范的过程中,太阳微系统公司(Sun Microsystems Inc.)与许许多多主要的Web服务器、应用服务器和开发工具供应商,以及各种各样富有经验的开发团体进行合作。其结果是找到了一种为应用和页面开发人员平衡了可移植性和易用性的开发方法。 JSP技术的特点JSP技术在多个方面加速了动态Web页面的开发:1.将内容的生成和显示进行分离。使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。2.强调可重用的组件。绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。3.采用标识简化页面开发。Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。4.通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。当与Java 2平台,企业版(J2EE)和Enterprise JavaBean技术整合时,JSP页面将提供企业级的扩展性和性能,这对于在虚拟企业中部署基于Web的应用是必需的。2.3 JavaBeanJSP脚本与表达式使开发者可以把HTML同Java代码交叉在一起以构成含动态内容的网页。这为Java程序员提供了一个编写网络程序和构造优秀站点的好方法。然而这种方法并没有实现网页外观与功能很好的分离,而且要求网页开发人员同时精通Java语言。除了脚本外JSP外还提供了一种以JavaBean组件为中心的动态网页设计方法。JSP允许网页开发人员不仅通过Java代码,而且通过HTML类标签的形式与Java组件交互。这种方法实现了程序员和网页开发人员之间很好的分工。JavaBean在JSP中的应用和ASP中使用COM有很多相同之处,它们都是完成预定义功能的封装的对象数据,但是他们也有很多不同之处,其不同之处如下:使用开发的语言不一样;COM组件需要在服务器上进行注册才能使用,而JavaBean则不需要。这是JavaBean最大的优点;JavaBean可以设置其内部属性。第三章 网站原型设计和具体实现策略3.1 网站原型的设计成果经过仔细分析,我们设计了网上书店的功能模块模型(如下图):图3-1网站的原型设计模型我们根据网上书店系统的服务对象,将它分为前台功能(面向顾客)和后台功能(面向管理者)两部分。下面我对每模块的功能作一简单介绍,对重点模块的功能以及实现我还将在后面作详细介绍。前台功能:l 注册新会员:我们将书店设计成会员制,通过这一模块注册成书店会员后,可以使书店掌握到用户的详细信息和提供送书等附加服务所需的信息。当然我们也会考虑到用户的隐私而不会把全部信息暴露给管理员。l 登陆和注销:为了保护会员的购物的安全性,须在购物前登陆,购物完成后注销。l 用户信息维护:可以更新用户的注册信息l 图书浏览和图书查询:提供对书店的图书的展示,这两个功能和下两个功能构成了这个系统最重要的部分,我们努力使之更加人性化。l 购书和订单查询:客户购物的主功能模块,前者提供客户选书和下订单的功能,后者可以客户随时察看订单的处理状态。l 客户留言:为了增加与用户的信息交流,我们提供了用户留言的功能。图3-2前台功能模块图后台功能:l 登陆与注销:要求管理员每次使用管理系统前必须要登录验证身份,并且我们为了保护网站的安全性,将系统的前台与后台设为不同的入口。l 修改管理员的信息:管理员的密钥是很重要的保证网站安全的手段,在这个模块中提供了修改它的功能,建议定期更改。l 库存信息:提供了查询库存量的功能,便于管理员掌握库存水平。l 用户管理:提供给管理员察看用户部分信息的功能,便于管理员分析用户成分,把握住书店的核心用户。l 图书管理:更新图书的各种信息l 订单管理:是书店控制售书的后台重要模块,驱动后台的售款,送书和记账操作。l 进货管理:进书的操作模块,也是书店的核心业务之一。l 账目管理:提供日期结账和图书成本的实时计算功能,这些是书店的账目操作的雏形。l 留言管理:在这个模块中管理员可以恢复客户的留言,达到与客户的互动。l 消息管理:管理书店首页的发布消息,可以实现动态更新。图3-3后台功能模块图3.2有关数据库设计的几点说明在设计过程中为了便于设计程序的编写,我们在数据库中的基本表中添加了几个状态位,现说明如下:账目表(account)中的account_status:它标志了账目中每一个条目的性质,属性值有两种:in(进书单)和out(订单)。它在订单处理完成或进书处理完成后被填写,在结账操作中被读取。消息表(message)中的mess_status:它标志着消息的发布状态。属性值有:0(不发布)和1(正在发布)。它在消息管理模块中被填写,在提交消息时要检查这一位,系统设定每次发布消息数不能大于五个。订单表(bill)中的bill_status:它标志着订单处理状态。属性值有:not_pay(未付款订单),send_book(款到,书已送出,但未收到用户确认),solved(订单处理完毕)。当为solved时,订单入账。另外数据库中的type表只是一个说明表,它表明图书类型和它的代号之间的对应关系,不参与任何一个操作。我们设计的系统中,它的具体内容如下:表3-1 类型表类型号类型代号类型名10_BASIC计算机-基础知识20_PROGRAM计算机-应用编程30_NET计算机-网络相关41_CULTURE其他-人文51_ENGLISH其他-英语3.3 网站的关键部分实现策略网上书店的主要业务流程是选书-购书-送书-入账的过程,它是网站与用户互动的主要环节,是最应该体现网站人性化的部分,是网站成功与否的关键部分。对于这一部分,不同的设计者有着不同的实现,下面我简要叙述一下我们设计中对它的实现策略。在用户看来,用户的购书环节是从选书开始的,但是在网站的处理中用户的购书行为是从提交订单开始的。在这之前,我们使用cookie暂时存储用户的选书信息。只有用户提交订单后,我们才认为用户确认了自己的购书行为,订单被写入网站的订单表,标注状态为“已下单,但未付款”。但网站受到用户的汇款后,开始为用户送书。书送出后,管理员须进入管理系统修改订单状态为“书已送出,但未受到用户的确认”。最后一步,用户确认被送书员取回时,管理员修改订单状态为“订单处理完毕”,系统将订单写入账目表,然后修改图书库存。至此一次购书交易完成。以上流程由图表示如下:图3-4处理流程图值得注意的是,在这样一个处理流程中,书店管理系统要有两个环节交由管理员来处理。一个是管理员收到用户的汇款单要确认汇款单是否符合系统接受的订单,确认无误后,启动送书环节。另一个是送书完成后,书店收到用户的确认后才可以修改订单状态,写入账目中。这两个环节也是系统中的重要环节,关系到管理系统的使用效果。所以在实际应用中强化管理,以使计算机系统和书店的管理有机的结合起来,最大限度的发挥效力。第四章 JSP技术在网络书店开发中的应用_4.1 JSP开发模型的选择Jsp提供两种使用模型:模型 1 为用户通过浏览器发出一个被送到某 JSP 页面的请求。在收到客户端的请求后,从 JSP 页面中编译出的 servlet 从一个 JavaBean 中请求信息。该 JavaBean 可以,从一个 Enterprise JavaBean(tm)、数据库或其它后端系统中请求信息。一旦 JavaBean 获取需要的信息后,这个 JSP servlet 可以查询并以 HTML 形式在用户响应中显示该信息。 (如左图) 模型1 模型2模型 2 代表另一种使用 JSP 页面的方法,发送请求到一个 Java servlet。在此例中,客户发出一个由 Java servlet 处理的请求。 此 servlet,如同模型 1 中的 JSP 页面,将从 JavaBean 或者 Enterprise JavaBean 中请求信息。 生成的动态内容将被封装在一个 JavaBean 中。此 servlet 然后调用 JSP servlet,由后者从前面生成的 JavaBean 中获取动态内容并发送到客户端的 Web 浏览器上。 (如右图)第二种模型更适合于大型的应用,这种结构也有利于将显示和数据处理分离的开发模式,但相对成本较高。由于我们是一个相对来说小型的应用,所以我们决定采用模型一来构建网站。4.2 使用JavaBean提高代码水平在开发过程中,随着编码的深入,使用JAVABEAN的好处就越发显现出来了。首先,它可以简化代码的编写,提高重用度。如,处理中我们有很多页面都需要调用时间参数,在转化成字符串型后,写入数据库或是在页面中显示出来。在页面中反复编写这一处理过程不仅繁琐而且冗长的代码对于阅读也是不利的。所以我们使用了dateTransfer.java封装了这一处理逻辑。dateTransfer.java/*/package ebs;import java.util.*;public class dateTransferprivate Date today;/日期参数private int year;/年private int month;/月private int day;/日public void dateTransfer()today=new Date();year=today.getYear()+1900;/转换成正常数字month=today.getMonth()+1;day=today.getDate(); public String strYear()String str_y;this.dateTransfer();str_y=Integer.toString(year);return str_y;/返回年public String strMonth()return str_m;/返回月public String strDay()return str_d;/返回日 /*/调用时,可以很容易看出代码的可读性得到了很大的提高。其次,JAVABEAN封装了不适合在表示页面中出现的处理逻辑,有利于将程序开发中的分工。如,在购物车处理中,我们需要频繁的从图书信息表(BOOK_INFO)中取得数值,显然在现实页面中频繁的出现这种数据库操作是不适当的,下面是我们定义的Buyercar.java,其中包含了数据库的连接,查询操作,并定义了一系列函数返回所需的值。Buyercar.java/*/package ebs;import java.sql.*;public class Buyercar private String bookid=null; /图书编号 private String bookname=null; /书名 private String bookisbn=null; /图书出版号 private String bookedit=null;/图书版本号 private float bookprice=0; /价格 private int booksum=0; /库存量 private static String strDBDriver=sun.jdbc.odbc.JdbcOdbcDriver; private static String strDBUrl=jdbc:odbc:ebookstore; java.sql.Connection conn; java.sql.Statement stmt; java.sql.ResultSet Rst; public Buyercar() /加载驱动 try Class.forName(strDBDriver);/加载驱动 catch(java.lang.ClassNotFoundException e) System.err.println(Buyercar():+e.getMessage(); /取当前数据库中全部图书信息 public ResultSet getBookList() String strSql=null; try /建立与数据库的连接 conn=DriverManager.getConnection(strDBUrl); stmt=conn.createStatement(); strSql=select * from book_info; Rst=stmt.executeQuery(strSql); /捕获异常 catch(SQLException e) System.err.println(Buyercar.getBookList();+e.getMessage(); return Rst; /根据图书的编号给图书的其他信息赋值 private void getBookInfo(String BID) String strSql=null; bookname=null; bookedit=null; bookisbn=null; /图书出版号 bookprice=0; booksum=0; try /建立和数据库的连接 conn=DriverManager.getConnection(strDBUrl); stmt=conn.createStatement(); strSql=Select * from book_info where book_id=+BID; Rst=stmt.executeQuery(strSql); while(Rst.next() bookname=Rst.getString(book_name); bookedit=Rst.getString(book_edit); bookisbn=Rst.getString(book_isbn); bookprice=Rst.getFloat(book_price); booksum=Rst.getInt(book_sum); /捕获异常 catch(SQLException e) System.err.println(Buyercar.getBookInfo():+e.getMessage(); /给图书的编号赋值,同时调用函数给图书的其他信息赋值 public void setBookid(String BID) this.bookid=BID; getBookInfo(bookid); /取图书编号 public String getBookid() return bookid; public String getBookname() return bookname; 4.3 JSP中对COOKIE的使用我们使用COOKIE来实现购物车,这就涉及到一些COOKIE的操作,在使用中我们发现COOKIE的使用由他自己的一些特殊性,现叙述如下:COOKIE的创建:创建时cookie的名字很重要,它关系到以后对cookie的操作,一般同类cookie的名字的字头是相同的,以便于查找。还需注意,cookie的名字不能相同。Cookie cookie=new Cookie(BID+request.getParameter(bid),1);/*调用cookie()函数创建一个新的cookie,它有两个参数,第一个是cookie的名字,第二个是cookie的值*/cookie.setMaxAge(30*24*60*60); /这个函数用来设定Cookie的有效期限,参数以秒为单位response.addCookie(cookie);/添加的用户cookie中COOKIE的读取:取得cookie是要根据cookie的名字判断提取。Cookie cookies=request.getCookies();/取出客户端得cookie放入一个数组中for(int i=0;i=4)/取出符合条件的cookie /对所需cookie的操作COOKIE的删除:由于不允许有同名的cookie,所以创建同名的cookie就将覆盖原来的,然后将它设为失效以达到删除的目的。Cookie cookie=new Cookie(BID+request.getParameter(bid),0); cookie.setMaxAge(0); /设为失效response.addCookie(cookie);COOKIE的修改:依前面的叙述,很容易想到将原cookie设为失效,在创建同名的,新的值的cookie即可带到修改的目的。4.4 JSP的中文问题的解决Java内核是unic

温馨提示

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

评论

0/150

提交评论