基于Web的航空代理人票务及酒店客房预订系统

上传人:沈*** 文档编号:156368903 上传时间:2022-09-26 格式:DOC 页数:36 大小:1.27MB
收藏 版权申诉 举报 下载
基于Web的航空代理人票务及酒店客房预订系统_第1页
第1页 / 共36页
基于Web的航空代理人票务及酒店客房预订系统_第2页
第2页 / 共36页
基于Web的航空代理人票务及酒店客房预订系统_第3页
第3页 / 共36页
资源描述:

《基于Web的航空代理人票务及酒店客房预订系统》由会员分享,可在线阅读,更多相关《基于Web的航空代理人票务及酒店客房预订系统(36页珍藏版)》请在装配图网上搜索。

1、2022年-2023年建筑工程管理行业文档 齐鲁斌创作本科毕业论文(科研训练、毕业设计)题 目:航空代理人票务及酒店客房预订系统姓 名:王尚停学 院:软件学院系:专 业:软件工程年 级:2001级学 号:01162029指导教师(校内):陈海山 职称:副教授指导教师(校外):李克喜 职称:年 月 日基于Web的航空代理人票务及酒店客房预订系统摘要 航空代理人票务及酒店客房预订系统主要实现了航空代理人通过使用该系统可以进行的在线查票,订票酒店客房预订(实时处理需得到相关的数据接口)以及相关票务的统计查询及公司、代理人、销售人员三级之间的管理。本系统基于Web采用J2EE应用Web层中的模块间数据

2、交换控件,主要采用Hash表实现在不同模块或是不同页面之间的或是不同层(比如表示层和logic层)之间的数据交换方式,简化数据编程和提高工作效率以及易于维护和扩展应用,实现Web应用的数据流和控制流分开。关键词 HashTable jsp MVC 票务客房预订Abstract:Aviation agent can use the Book System of Aviation Agent and Hotel Rooms to search the ticket,book ticket and make a reservation for hotel rooms and to ticket st

3、atistics(real time need some necessary interface).and also to manager the relation of corporation,agent and seller.The System based on Web adopt data exhange control between different module of J2EE application Web layer which adopt HashTable to realize data exchange between different layer or modul

4、e and page(for example:Logic layer and Presentation layer), predigest date program ,raise working efficienc as well as easily maintenance and extend application.It accomplist the separation of date stream and control stream.Keywords:HashTable jsp MVC ticket room book目 录引言 3第一章 旅游电子商务的经营模式介绍3第二章 MVC三

5、层模式以及JSP/Servlet介绍4第三章 J2EE应用Web层中的模块交换控件7第四章 应用系统开发环境及工具9第五章 系统设计分析11第六章 系统应用程序设计18结论30致谢语30参考文献30附录31引言随着近几年的中国经济飞速发展,人民生活水准极大改善,国人搭机出行的频率也逐年增高,带动了相关行业如旅游业、酒店业的发展,现代生活的匆忙使旅客的时间越发的宝贵,旅客不希望在订购机票,酒店客房上耗费太多的时间,另一方面,传统机票代理销售机构也面临许多问题l 不能实时查询航班信息,会造成旅客买不到机票,飞机上却还有剩票卖不出去的窘境l 机票的预订,退订采取电子化处理,提高工作效率l 随着业务量

6、的提高,在票据的统计查询上将浪费大量的时间l 由于空间与时间的限制,业务上扩大将带来许多问题l 机票代理公司对下级代理人以及代理人对销售人员之间的管理问题本系统在传统代理人票务经营模式的基础上,为适应现代网络经济的要求,满足机票代理公司需求,提了供及时的、丰富、针对性强的服务,实现网上接单、查询、统计、代理人管理以及与在此基础上加入酒店客房的预订的服务,很好的解决了代理人所遇到的问题。第一章 旅游电子商务的经营模式介绍1.1旅游电子商务的涵义电子商务(Electronic Commerce,EC或者Electronic Business,EB),就是利用现代先进的计算机网络技术从事商务活动的方

7、式。狭义的电子商务仅仅将通过Internet网络进行的商业活动归属于电子商务,而广义的电子商务则将利用包括Internet,Intranet,LAN等各种不同形式网络在内的一切计算机网络进行的所有商贸活动都归属于电子商务,旅游电子商务即电子商务在旅游业中的运用。当今世界,电子商务的发展非常迅速,形成了一个发展潜力巨大的市场.不可否认,电子商务将继续成为当前和今后一段时间内各行业关注的方向和重点.由于传统商业模式的改变,企业本身的运作,企业与企业之间,企业与消费者之间的沟通将通过Internet和电子手段来实现,这就要求传统的企业以最快的速度适应新的竞争环境。由于旅游电子商务不仅可以打破地域限制

8、,而且可以最大限度地将各种旅游资源,以最经济的方式结合在一起,同时,无店铺经营也有助于降低成本,使旅游资源的所有者和消费者都得到益处,因而网上旅游的价格更有竞争力。事实上,旅游业不涉及目前最为繁杂的物流配送问题,这也是它相对于其它行业的电子商务更容易发展的优势所在.旅游业较少涉及实物运输,对企业的物流配送系统要求不高,旅游服务的无形性更使其适合于网上销售。比如,预订洒店上网操作后无需送货上门,只要直接去洒店享受就行了,不用担心延时服务,货不对板等问题。1.2 旅游电子商务经营模式分析1.2.1旅游电子商务经营模式的分类电子商务按交易对象划分为:商业机构对商业机构的电子商务(Business t

9、o Business, B2B),商业机构对消费者的电子商务(Business to Consumer, B2C),商务机构对政府的电子商务(Business to Administrations, B2A),消费者对政府的电子商务(Consumer to Administrations, C2A),消费者对商务机构(Consumer to Business,C2B)和消费者对消费者的电子商务(Consumer to Consumer, C2C)等几种模式,对旅游业而言,电子商务主要以B2B和B2C两种模式为主。1.2.2 旅游电子商务B2B模式旅游电子商务B2B模式,即旅游企业间电子商务,指

10、的是旅游企业间利用计算机网络信息技术来提高彼此之间的交易效率与合作水平,从而提升企业自身竞争力的商务活动,旅游电子商务B2B具有获取成本低,销售成本低,销售机会多的特点,旅游企业通过和重要的相关企业建立电子联系,使企业获取信息的成本降低,中小型旅游企业则可以通过B2B在网络上的交易在不增加额外的费用的情况下吸引更多的客户,Internet随时都在运作,因此B2B交易能达到传统的宣传所不能达到的效果。1.2.3 旅游电子商务B2C模式旅游电子商务B2C,就是旅游企业与消费者之间的电子商务,也即网上零售。旅游企业电子商务B2C模式的优势主要体现在:旅游信息查询便利,旅游者可以很容易在网上检索相关信

11、息;旅游信息丰富,众多旅游企业会提供尽可能多的信息以满足游客的需求;个性化服务,由于通过网络联系成本非常低,旅游企业可根据游客不同的需求设计个性化的旅游产品;低成本,由于无房租及大量的办公费用,旅游企业可以为游客提供较低的价格;面向市场广阔,在网上,没有地区之分,只有网上,网下的区别,任何一家网上的旅游企业都是一个跨国企业,它的顾客是来自全世界的,当然它需要有相关的经营资格。1第二章MVC三层模式以及JSP/Servlet介绍2.1 MVC设计思想MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分

12、离,这样一个应用被分成三个层模型层、视图层、控制层。 图2-1视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过

13、程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于

14、模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。 控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数

15、据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。2.1.1MVC的优点(一) 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。(二) 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。(三) 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只

16、是在新平台上对视图和控制器进行新的修改。(四) 潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。2.1.2 MVC的不足之处(一) 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。(二) 视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。(三) 视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的

17、频繁访问,也将损害操作性能。(四) 目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。2.2JSP Model1 和JSP Model2尽管MVC设计模式很早就出现了,但在Web应用的开发中引入MVC确是步履维艰。主要原因是在早期的Web应用的开发中,程序语言和HTML的分离一直难以实现。例如在JSP网页中执行业务逻辑的程序代码和HTML表示层数据混杂在一起,因此很难分离出单独的业务模型。这使得维护JSP网页非常困难,很难满足用户的变化性需求。2.2.1 JSP Model1mode1 1是一个以JSP文件为

18、中心的模式,在这种模式中JSP页面不仅负责表现逻辑,也负责控制逻辑。专业书籍上称之为逻辑耦合在页面中,这种处理方式,对一些规模很小的项目如:一个简单的留言簿,也没什么太大的坏处,实际上,人们开始接触一些对自己来说是新的东西的时候,比如,用JSP访问数据库时,往往喜欢别人能提供一个包含这一切的单个JSP页面,因为这样在一个页面上他就可以把握全局,便于理解。但是,用Model 1模式开发大型时,程序流向由一些互相能够感知的页面决定,当页面很多时要清楚地把握其流向将是很复杂的事情,当您修改一页时可能会影响相关的很多页面,大有牵一发而动全身的感觉,使得程序的修改与维护变得异常困难;还有一个问题就是程序

19、逻辑开发与页面设计纠缠在一起,既不便于分工合作也不利于代码的重用,这样的程序其健壮性和可伸缩性都不好。图2-22.2.2 JSP Model2为了克服Model 1的缺陷,人们引入了Model 2,如图2-3所示图2-3它引入了控制器这个概念,控制器一般由servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。因此,这个servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务

20、逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式。实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。2第三章 J2EE应用Web层中的模块交换控件J2EE应用Web层中的模块间数据交换控件:主要采用Hash表实现在不同模块或是不同页面之间的或是不同层(比如表示层和logic层)之间的数据交换方式,简化数据编程和提高效率以及易于维护和扩展应用,实现Web应用的数据流和控制流分开。采用java实现设计过程,并提升到支持大

21、部分面向对象的环境,因为Hash表是数学和计算机领域的一个基本概念,也是数据结构中一种常用的数据组织和表达方式,只要语言环境可以支持面向对象和Hash或是类似的都可以实现这个设计.3.1 HASH表在java中,提供了一个散列表类Hashtable,利用该类,我们可以按照特定的方式来存储数据,从而达到快速检索的目的。散列表,又称为哈希表,是线性表中一种重要的存储方式和检索方法。在散列表中,可以对节点进行快速检索。散列表算法的基本思想是:由结点的关键码值决定结点的存储地址,即以关键码值k为自变量,通过一定的函数关系h(称为散列函数),计算出对应的函数值h(k)来,将这个值解释为结点的存储地址,将

22、结点存入该地址中,检索时,根据要检索的关键码值,用同样的散列函数计算出地址,然后,到相应的地址中去获取要找的结点数据。因此,散列表有一个重要特征:平均检索的长度不直接依赖于表中元素的个数。 散列表最重要的一个指标是负载因子,即散列表中结点数目与表中能容纳的总结点数的比值,它描述了散列表的饱和程度,负载因子越接近1.0,内存的使用效率越高,元素的寻找时间越长,同样,负载因子越接近0.0,元素的寻找时间越短,但内存的浪费越大。Hashtable类缺省的负载因子为0.75. 33.2 DTO(数据传输对象)数据传输对象,是在绝大部分应用中都需要这样的对象,用以数据的传递,载放和操作,常用于设计控制流

23、和数据流分开的应用3.3 简单测试类的分析见附录程序3-1,结果3-23.3.1 分析整个文件就是用到两个主要的对象:import mon.transdata.BsFormData;import mon.transdata.BsFormTable;这就是HDTO的主要成员,一个是装载数据对象,一个是表对象。他们之间的关系是:BsFormData可能包含多个BsFormTableBsFormTable可能包含多个BsFormDataBsFormData是应用的入口,当作一个总的数据对象,其中容纳多个表(BsFormTable)和多个Field(BsFormField),BsFormTable又可

24、以创建记录(BsFormRecord),记录的表示也是通过BsFormData,所以BsFormData与BsFormRecord又内在的联系。该模式实现的目标是:实现层次间(比如MVC模式的控制层和模型层、表示层与控制层)、对象间(比如一个控制类和一个显示页面)数据的有效传输和管理;在Web应用中可以结合Session实现数据的有效转移;在普通应用中可以实现数据合理组织和分发。3.4 主要相关类图图3-1第四章应用系统开发环境及工具4.1开发环境JSP(IAVA SERVER PAGES)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其在动态网页的

25、建设中有其强大而别特的功能,现介绍如下:(一) JSP的优点a) 将内容的生成和显示进行分离 使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。 在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过

26、访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。b) 生成可重用的组件 绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。c) 采用标识

27、简化页面开发 Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。 通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。d) 将内容的生成和显示进行分离 与SERVLETS相比,JSP能提供所有SERV

28、LETS功能,但它比用println书写和修改HTML更方便。此外,你可以更明确的进行分工,WEB页面设计人员编写HTML,只需要留出地方让SERVLETS程序员插入动态部分即可。e) 由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。f) 作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。4(二) 应用服务器T

29、omcat概述Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。本系统采用Tomcat 5.0.23(三) 日志的操作Log4J在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至

30、是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。2本系统采用Log4J-1.2.9.(四) 开发工具a) 前台页面采用DREAMWAVER 2004 MXb) 图片处理采用FIREWORKS 2004 MXc) 后台代码编辑ECLIPSE 3.0MYECLIPSE+LAMBOZ+Together(五) 后台数据库SQLSERVER2000 SP3a航信接口(可选)第五章 系统设计分析5.

31、1 应用需求分析航空代理人票务及酒店客房预订系统需要满足以下方面的需求(一) 管理方面本系统分为三级身份管理:公司、代理人、销售员。a) 销售员主要负责销售工作。b) 公司可以添加删除代理人,并且查询其下所有的代理人及销售员的订单数据,及权限控制。c) 代理人可以添加删除销售人员,并且查询其下所有的销售员的订单数据,及权限控制。d) 必要时公司与代理人均可以进行销售工作。组织结构图如下:图图5-1(二) 销售统计管理订单方面票务的接单、预订、退订、查询等工作主要由销售员完成,销售员在接到顾客的订票电话(或其他订票手段)后通过本系统查询符合条件的机票或客房信息,若有符合条件的信息通过本系统进行预

32、订,存入数据库。a) 可以指定条件查询数据库。b) 票单的过期的自动处理。(三) 与客户的沟通交流方面建立BBSFAQ模块,方便顾客及下级人员对该系统进行提问,回答,交流。也能对问题进行管理,移入移出经典FAQ。5.2 系统数据库设计5.2.1 数据库环境说明本系统数据库采用微软SQLSERVER2000 SP3a5.2.2逻辑设计数据库Bishe:l 表username:用于储存登陆信息l 表accountID:用于储存公司、代理人、销售员的信息l 表hotelINFO:用于储存酒店信息l 表roomType:用于储存客房信息l 表record:用于储存客房订单l 表airINFO:用于储存

33、航班信息l 表airOrder:用于储存机票订单表accountID上建有两个触发器,用于当修改表accountID的数据时自动修改表username的登录信息,代码如下:添加数据时CREATE TRIGGER add_agent ON dbo.agentINFO for INSERTASdeclare accountID varchar(50)declare password varchar(10)declare previlige varchar(2) set accountID=(select i.accountID from Inserted as i)set password=(se

34、lect i.password from Inserted as i )set previlige=(select i.previlige from Inserted as i )insert into username (accountID,password,previlige) values(accountID,password,previlige)图5-2修改数据时:CREATE TRIGGER change_agent ON dbo.agentINFO for UPDATEASdeclare password_i varchar(10)declare accountID_d varch

35、ar(10)declare previlige_i varchar(2)set accountID_d=(select d.accountID from Deleted as d)set password_i=(select i.password from Inserted as i )set previlige_i=(select i.previlige from Inserted as i )if UPDATE (password)BEGINupdate username set password=password_i where accountID=accountID_dendif UP

36、DATE (previlige)BEGINupdate username set previlige=previlige_i where accountID=accountID_dend图5-3为了处理订单过期的问题,在数据库中建立两个作业,分别处理机票订单与客房订单。每分钟自动运行一次机票订单处理:update airOrder set status=2 where datediff(day,beginDate,getdate()=1 and status=0图5-4update record set status=2 where datediff(day,arriveDate,getdat

37、e()=1 and status=0图5-5表信息如下:图5-6数据库BBSDB:表Admin:用于储存管理员信息表Mssage:用于储存留言信息表MessageReply:用于存储回复信息图5-75.2.2 数据库的连接由于本系统的运行时需要时常的操作数据库,因此采用了数据库连接池技术。一般情况下,在使用开发基于数据库的WEB程序时,传统的模式基本是按以下步骤:1 在主程序(如Servlet、Beans)中建立数据库连接。 2 进行SQL操作,取出数据。3 断开数据库连接。使用这种模式开发,存在很多问题。首先,我们要为每一次WEB请求(例如察看某一篇文章的内容)建立一次数据库连接,对于一次或

38、几次操作来讲,或许觉察不到系统的开销,但是,对于WEB程序来讲,即使在某一较短的时间段内,其操作请求数也远远不是一两次,而是数十上百次,在这种情况下,系统开销是相当大的。事实上,在一个基于数据库的WEB系统中,建立数据库连接的操作将是系统中代价最大的操作之一。很多时候,网站速度瓶颈就在于此。其次,使用传统的模式,必须去管理每一个连接,确保他们能被正确关闭,如果出现程序异常而导致某些连接未能关闭,将导致数据库系统中的内存泄露,最终我们将不得不重启数据库。常用的解决办法是使用数据库连接池:图5-4如图5-4所示当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放

39、回内存即可。而连接的建立、断开都有连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。使用连接池的优点使用连接池的优点主要体现在两个方面:对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。便于应用的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与应用无关。55.2.2.1 本系统

40、(除BBS)数据操作的处理方法(一) 为了方便系统的转移,数据库配置配置文件db.properties里面,该文件存有常用数据库的的连接代码,可根据需要,更改少量代码,即可切换数据库(二) 所有sql语句均放在配置文件DataAccessForQuery.xml里面统一管理,Sql语句采用PreparedStatement 对象,可以接受一个或多个动态参数。使用时通过”sql id”,”datetype”,及参数数组获得相应个sql语句。如下图所示:图5-5(三) 数据库的连接,sql语句的读取、执行通过一个数据访问层Data Access Layer类DataAccess(String pa

41、th, String DbType, String sqlStatement,String para)完成,输入DataAccessForQuery.xml,数据库类型,sql语句id,以及参数数组,就可执行数据库操作如下图代码片段示例:图5-6(四) 主要的类图图5-75.3 安全考虑设计5.3.1 防止SQL注入攻击用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。Statement stmt = conn.createStatement(); String checkUser = select * from

42、login where username = + userName + and userpassword = + userPassword + ; ResultSet rs = stmt.executeQuery(checkUser); if(rs.next() response.sendRedirect(SuccessLogin.jsp); else response.sendRedirect(FailureLogin.jsp); 图5-8如果数据库里存在一个名叫“jack”的用户,那么在不知道密码的情况下至少有下面几种方法可以登录: 用户名:jack 密码: or a=a 用户名:jack

43、 密码: or 1=1/* 用户名:jack or 1=1/* 密码:(任意)要避免这种情况,本系统一方面采用过滤特殊字符、限定位数的方法,另一方面采用采用构造sql时使用占位符: select * from users where userName=?图5-9然后用prepareStatement的setXxx方法来设置参数的值。65.3.2 隐藏真实地址采用servlet,利用映射的方式,达到隐藏真实地址的目的。5.3.3 认证许可方式所有页面均必须经过许可才可访问,成功登陆后session.setAttribute(register)!=1 并在页面加入:图5-10如果没有登陆直接输入网

44、页地址将自动跳转到首页。5.3.4 防止重复登陆为了防止账号重复登陆并得到在线人数,本系统采用建立session监听器,每当用户登陆的时候,建立session,监听器自动执行valueBound(),将用户存入vector,列表离开的时候自动执行valueUnbound(),vector用户数减一清除session。见代码5-15.3.5 线程安全与ASP、PHP等脚本语言不一样,JSP默认是以多线程方式执行的。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间。线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。虽然多线程应用程

45、序中的大多数操作都可以并行进行,但也有某些操作(如更新全局标志或处理共享文件)不能并行进行。如果没做好线程的同步,在大并发量访问时,不需要恶意用户的“热心参与”,问题也会出现。为了解决以上问题, 本系统采用的方案是用局部变量代替实例变量。因为实例变量是在堆中分配的,被属于该实例的所有线程共享,不是线程安全的,而局部变量在堆栈中分配,因为每个线程都有它自己的堆栈空间,所以这样线程就是安全的了, 如果采用的是实例变量,那么该实例变量属于该实例的所有线程共享,就有可能出现用户A传递了某个参数后他的线程转为睡眠状态,而参数被用户B无意间修改,造成好友错配的现象6第六章 系统应用程序设计6.1 登陆系统

46、6.1.1 主页图6-16.1.2主页功能(一) 具有表单验证功能,可以判断用户名、密码是否为空。(二) 当用户名或者密码输入错误的时候,会有提示。图6-2(三) 当用户重复等入的时候,会有提示。图6-36.2 系统主界面图6-46.3 销售系统6.3.1 客房预订系统6.3.1.1 查询酒店页面图6-5(一) 可根据城市、酒店名称、酒店星级、价格范围、酒店所在位置查询酒店。(二) 入住时间与离店日期有验证功能,时间不能小于当日。6.3.1.2 列表酒店页面图6-6(一) 该页面将符合条件的酒店列出,并显示酒店基本信息。(二) 该页面具有分页功能。6.3.1.3 酒店查询结果页面图6-7该页面

47、显示所选择的酒店介绍,房间价格等信息。6.3.1.4 填写预订单页面图6-8在该页面填写订单的具体信息,可选择多人,多房间,表单具有验证功能,能验证手机号码及电子邮件的合法性。按下“发出订单”后,订单信息将写入数据库。6.3.1.5 提交成功页面该页面显示订单信息图6-96.3.2 机票购买系统6.3.2.1 机票查询页面图6-10通过该页面可按送票城市、出发城市、到达城市、起飞日期、起飞时间、航空公司、人数、排序方式查询航班。6.3.2.2 查询结果页面图6-10在该页面显示查询的结果,详细的航班座位信息6.3.2.3 填写预订单页面图6-11在该页面填入详细的机票信息,按“确认提交当前订单

48、”后写入数据库。6.3.2.4 提交成功页面图6-126.4 系统管理6.4.1 代理人/销售人员管理页面在该页面可以对代理人/销售人员进行添加、删除、修改管理(一) 下级用户账号已上级用户账号开头,且只能输入三位数字。(二) 不允许添加已经存在的账号。(三) 需输入正确的传真、Email格式。图6-13修改页面图6-146.4.2 权限管理在该页面可以对下级账号进行权限控制,只有被授权的账号才能被使用访问。图6-15当要进入某个模块而尚未被授权,将显示:图6-156.5 统计管理6.5.1 查询机票订单页面通过该页面可从查询登陆帐号本身或者其下级帐号按照订单日期、客户姓名、起飞日期、起飞城市

49、、航班号、订单号、到达城市、送票城市、航空公司查询正常状态、退订状态、过期状态三种状态下的订单信息。图6-166.4.1.2 机票订单退订页面如果订单属于“正常”状态,则允许退订。图6-17退订成功页面图6-17当查询的是“退订”状态的订单时,订单信息将有退订时间的显示:图6-18当查询的时“过期”状态的订单时,将有如下显示:图6-186.4.2 查询客房订单该模块页面与机票订单查询页面相似。6.5 FAQ BBS 系统6.5.1 FAQ 主页(非管理员)该页面用于显示当前的FAQ,及提交FAQ,采用了分业技术。图6-19该页面用于显示FAQ图6-206.5.2 FAQ管理页面管理员登陆后可通

50、过该页面对FAQ进行删除或者移入经典FAQ等处理图6-216.5.3 经典FAQ管理页面管理员登陆后可通过该页面对经典FAQ进行删除或者移出FAQ等处理图6-22结论本系统较好的实现了航空代理人对票务及酒店客房的预订、统计查询以及公司、代理人、销售人员之间管理功能,使用本系统将大大提高航空代理人的工作效率。系统采用的MVC三层模式结构,将页面显示与业务逻辑处理较好的分开, servlet控制器的使用为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。同时配和将sql语句、控制

51、器分发路径写入xml配置文件,实践证明MVC的使用提高了项目的模块复用、开发效率及日后维护的便利。Web层中的模块间数据交换控件结合Session的使用,简化了数据编程和提高效率以及易于维护和扩展应用,实现Web应用的数据流和控制流分开。安全问题也是本系统的设计重点,防止SQL注入攻击、隐藏真实地址、页面的认证访问以及处理多用户并发过程的线程安全防范大大提高了系统的使用安全。由于时间的关系,本系统仍然有许多需要改进的地方,view部分仍存在一些逻辑处理、计划未来完全采用struts标签将大大减少view部分的jsp代码量。由于Jsp页面仍存在有一定的实例变量,因此线程安全的问题并不能仍完全杜绝

52、。这需要日后编写jsp时不是用任何实例变量。通过开发这个项目,是我基本掌握了jsp网站的开发,为下一步学习EJB打下基础。致谢语最后,对本项目及论文给予关心帮助的易迅公司李克喜经理、软件学院陈海山老师表示衷心的感谢!没有他们无私的帮助,我将无法顺利完成此项目及论文。参考文献1.田志强.旅游电子商务的经营模式及对策分析.Z. 2.孙玉琴.精通Struts基于MVC的JavaWeb设计与开发.M.北京:电子工业出版社,2005.3.j2semantis.哈希表介绍.Z.4.清风.ASP.JSP.PHP的比较.Z. 5.喻祥.JSP数据库连接池的必要性.Z. 6.creda.JSP安全编程实例浅析.

53、Z. .附录程序3-1:package com.test;import mon.transdata.BsFormData;import mon.transdata.BsFormTable;public class TestFormData public static void main(String args) throws Exception BsFormData sesData = new BsFormData(); sesData.putForce(Test1, Test1Value); sesData.putForce(Test2, Test2Value); sesData.putFo

54、rce(Test3, Test3Value); sesData.putForce(Test4, Test4Value); System.out.println(sesData.get(Test1); System.out.println(sesData.get(Test2); System.out.println(sesData.get(Test3); System.out.println(sesData.get(Test4); BsFormTable table = sesData.addTable(MyTable); for (int i = 0; i 10; i+) /10 rows B

55、sFormData data = table.add(); /5 counlums data.putForce(tableCoun1, 01); data.putForce(tableCoun2, 02); data.putForce(tableCoun3, 03); data.putForce(tableCoun4, 04); data.putForce(tableCoun5, 05); System.out .println(-table1-); for (int i = 0; i 10; i+) BsFormData rec = table.get(i); System.out.prin

56、t(rec.getField(tableCoun1).getValue(); System.out.print(|); System.out.print(rec.getField(tableCoun2).getValue(); System.out.print(|); System.out.print(rec.getField(tableCoun3).getValue(); System.out.print(|); System.out.print(rec.getField(tableCoun4).getValue(); System.out.print(|); System.out.prin

57、t(rec.getField(tableCoun5).getValue(); System.out.println(|); BsFormTable table2 = null; int tableSize = 0; table2 = sesData.getTable(MyTable); tableSize = table2.size(); for (int i = tableSize; i 10 + tableSize; i+) /5 rows BsFormData data = null; data = table2.add(); /5 counlums data.putForce(table2Coun1, 01); data.putForce(table2Coun2, 02); data.putForce(table2Coun3, 03); data.putForce(table2Coun4, 04); data.put

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!