基于jsp网上火车票订购系统设计与实现论文

基于jsp网上火车票订购系统设计与实现论文

ID:44049769

大小:948.66 KB

页数:82页

时间:2019-10-18

上传者:U-7604
基于jsp网上火车票订购系统设计与实现论文_第1页
基于jsp网上火车票订购系统设计与实现论文_第2页
基于jsp网上火车票订购系统设计与实现论文_第3页
基于jsp网上火车票订购系统设计与实现论文_第4页
基于jsp网上火车票订购系统设计与实现论文_第5页
资源描述:

《基于jsp网上火车票订购系统设计与实现论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

毕业设计(论文)任务书第1页毕业设计(论文)题目:基于jsp网上火车票订购系统设计与实现毕业设计(论文)要求及原始数据(资料):I・基于jsp作为前端设计完成B/S架构的火车票订购系统;2.火车票系统使用SSH框架完成整体设计;3.熟练掌握MVC以及SSH框架技术;4.设计并实现火车票订购系统的查询、注册、登录、用户信息修改等内容;5.深入了解火车票订购系统的逻辑和实现;6.训练检索文献资料和利用文献资料的能力;7.训练撰写技术文档与学位论文的能力。。毕业设计(论文)主要内容:1.火车票订购系统的需求分析; 1.系统的概要设计以及详细设计;2.系统功能的编码实现,包括用户登录、注册、信息修改、车票查询、预定及改签等;3.利用jsp开发友好界面;4.通过使用SSH框架使系统结构更加清晰;5.系统的结构以及功能测试;6.火车票订购系统的试运行;7.熟练掌握软件开发生命周期各个阶段的主要任务;学生应交出的设计文件(论文):1.内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2.包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。主要参考文献(资料):[1]丁旭•基于B/S架构的软件项目实训——JSPM.北京:清华人学岀版社,北京交通大学出版社,2011[2]郝玉龙.轻松掌握STruTS2[M].北京:清华大学出版社,北京交通大学出版社,2010 [1]于湛麟,李仲秋,任永昌.SSH框架实现MVC架构的电子商务软件平台[J].计算机技术与发展,2012,(10)[2]郝玉龙,尹建平等.JavaEEWeb发实例精解M.北京:清华人学出版社,北京交通大学出版社,2008[3]任奕帆.基于Java技术的的火车票订购系统设计研究[J].电子技术与软件工程,2013,(07)[4]QuFeng,ZOUMinandLiXiao-Zhen.SurveyonJavaTechnologyFrameeorkEj].ComputerSystems&Applications,2012,21(8):236-239[5]James,El1iott,HarnessingHibernate[M].O'ReillyMedia,2008[6]Shenhan,Kerri,HirbernatemadeEasy[M].Pulpjava,2008[7]赵洋,张丽,王恩东等.基于Struts,Hibernate和Spring的J2EE架构研究[J].现代电子技术,2009(02)[8]杨金花,JSP技术屮文乱码的原因及解决方法[J].电子设计工程,2011(01) 基于jsp网上火车票订购系统设计与实现摘要随着信息技术的不断发展,人们的生活质量也不断提高。除了春运巨大的人流量之外,出门旅行、工作出差、离家求学、回家探亲等短途或长途出行,综合费用和安全等多方而因素,火车成了多数人首选的交通工具,加Z各大城市动车、高铁、城际列车的陆续开通,旅途时间也较之前有非常大的改观。在人流量众多的情况下,人工服务台以远远满足不了旅客的需求。在信息化的社会里,互联网这个大众平台为我们捉供了既便捷又省时的方式,那就是基于互联网的火车票订购系统。这样不仅可以避免火车站售票厅人员拥挤而影响工作人员正常工作等现彖的发生,旅客们也不必为长时间排队等候购票而发愁。本文的火车票订购系统开发模式选择了当今较为流行的B/S模式,釆用而向对彖的分析方法,显示页面基于jsp技术进行开发。系统在目前web应用程序屮非常流行的开源集成框架struts+spring+hibernate的基础上,实现项目的表示层、业务逻辑层以及数据访问层三层技术架构,后台的数据库管理系统则选用Oraclellg,web服务器选用的是轻量级的tomcato系统实现了用户注册登录、信息修改、联系人添加、车票查询、车次查询、余票查询、车票订购、车票改签及退订等功能。关键词:火车票;订购;jsp DesignandImplememntationOfOnlineTrainTickectOrderingSystemBasedOnJSPAbstractWiththecontinuousdevelopmentofinformationtechnology,people'squalityoflifehasalsobeenimproved.Inadditiontospringahugeflowofpeople,travel,travel,homeschooling,hometovisitrelatives,suchasshortorlongdistancetravel,comprehensivecost,securityandsoonmanyfactors,thetrainintothemostpeoplepreferredmeansoftransport,coupledwitheachbigcityEMU,high-speedrail,intercitytraindebutsinsuccession,thejourneytimethanbeforewithverybigchange.Inthecaseofalargenumberofpeople,theartificialservicedeskinordertomeettheneedsofpassengersfaraway.Intheinformationsociety,theInternetplatformforustoprovideaconvenientandtimesavingway,thatisbasedontheInternet,thetrainticketorderingsystem.Thiscannotonlyavoidtherailwaystationticketofficestaffcrowdedandaffectthenormalworkofstaffandotherphenomenaoccur,passengersdonothavetowaitforalongtimequeuingtobuyticketsandworry.Inthispaper,thetrainticketorderingsystemdevelopmentmodelhaschosenthemorepopularB/Smode,usingtheobject-orientedanalysismethod,displaypagebasedonJSPtechnologydevelopment.Systeminthecurrentwebapplicationverypopularopen-sourceframeworkstruts+Spring+Hibernatebasedtoachieveprojectoftherepresentationlayer,businesslogiclayeranddataaccesslayerthreelayerarchitecture,thebackgrounddatabasemanagementsystemchoosesOracle1lg,theselectionofwebserverisTomcatlightweight.Systemrealizestheuserlogin,modifytheinformation,contacts,add,ticketinquiries,tripsinquiries,ticketquery,ticketordering,mealticketsandunsubscribefunction.Keywords:traintickets;order;jsp 目录1绪论11・1选题的背景和意义11.2国内外研究现状11・3研究的主要内容21・4论文组织结构32相关软件技术介绍42.1JSP技术简介42.1.1JSP基本概念42.1.2JSP页面的执行过程42.1.3JSP的技术优势42.2SSH框架简介52.3数据库简介52.3.1Oracle数据库简介52.3.2SQL简介52.4系统采用结构分析62.4.1C/S与B/S的比较72.4.2两层结构与三层结构的比较83系统需求分析93.1系统功能性需求分析93.1.1系统总体功能需求概述93.1.2普通用户功能需求93.1.3注册用户功能需求103.1・4管理员功能性需求113.2系统非需求功能性需求分析123.2.1系统的易用性需求123.2.2系统的运行环境需求13 4系统总体设计142.1系统设计的任务142.2系统体系结构142.2.1系统结构142.2.2功能框架152.3系统功能模块说明152.3.1用户注册和登录模块152.3.2注册用户个人信息管理模块152.3.3车票查询模块164.3.4车票预订及订单生成模块164.3.5车票改签及退订模块164.3.6管理员模块164.4数据库设计174.4.1主要E—R图174.4.2系统数据库表185系统详细设计与实现225.1用户注册与登录模块225.1.1注册模块设计与实现235.1.2登录及自动登录模块设计与实现245.1.3密码找回模块设计与实现265.2注册用户个人信息管理模块285.2.1个人信息修改模块设计与实现285.2.2常用联系人模块设计与实现293.2.3订单查询模块设计与实现323.3车票查询模块333.3.1余票查询模块设计与实现333.3.2票价查询模块设计与实现353.3.3车站车次查询模块设计与实现363.3.4车次查询模块设计与实现37 2.4车票预订及订单生成模块395.4.1车票预订模块设计与实现395.4.2订单生成模块设计与实现415・5车票改签及退订模块435.5.1车票改签模块设计与实现435.5.2车票退订模块设计与实现445.6管理员模块465.6.1列车添加模块设计与实现465.6.2列车删除模块设计与实现486系统测试506.1系统测试的目的506.2系统的功能测试506.2.1用户注册与登录功能测试506.2.2注册用户个人信息管理功能测试523.2.3车票查询功能测试522.2.4车票预订及订单生成功能测试532.2.5车票改签及退订功能测试547总结与展望553.1总结553.2展望55参考文献56致谢57外文文献57中文翻译65 1绪论1・1选题的背景和意义随着屮国经济的快速发展,中国的运输能力的不断提高,越来越多的人开始走出家门来到陌生的城市,如商务旅行活动。在此条件下,将发生流量增大。火车票管理对交通的正常运行起着至关重要的作用,但仅仅是对人的行为逐渐增加的管理信息,当出现复杂的数据处理费时,火车票的单一管理方式已不适合目前的情况。当今时代是信息产业的时代,信息产业的国家为国民经济增长的重要组成部分。在这样的环境,在火车票管理方而运用先进的信息技术已成为时代发展的必然。中国大陆发生了大规模的交通运输压力的现象一般在每年的农历新年-春运。春节期间流量非常大,每年的春运交通都超过大陆的总人口数,超过十亿人。所以人们越来越盼望能有一个稳定的火车订购系统。述种种火车票购票问题的存在,开发一套火车票订购系统,对于缓解订票高峰时期的客运压力,为用户捉供方便快捷的订票服务。本选题研究的火车订购系统,对于缓解订票高峰时期的客运压力,为用户捉供快捷方便的预约服务。这样车票可以在任何地方购买,所以游客应该能够知道他们需要的车票信息,如冇票就可以直接购买了,同时述能够起到一定的辅助打击非法贩卖火车票的行为,预防、减少和打击铁路沿线上的各种犯罪行为、保障乘客的人身安全、加强乘车管理等方面具有重要的意义价值。1.2国内外研究现状在1994年10月的时候,美国铁路公司首先推出网上售票系统,乘客只要输入自己的网上信用卡号码和到期日,门票可以宜接购买。单程票,包括电子票,取票站,交货期等形式。直到1997年9月底,排名世界前20的铁路公司有自己的网上售票系统。其历史可以追溯到2000年,当时的北京铁路局开通“首铁在线"网站,该网站提供查询机票查询,预订等多种服务类别,用户只需支付注册费成为会员会能够享受6天订票服务。但是,在市场普遍预期,但并没有解决实际问题的试点,每到春季假期等特殊吋期,往往不能在线买到票,即使在和平吋期,它是很难得一个紧线车票。直到2008年, 当“首铁在线笏攵弃了被指“挂名"票务功能,同时还关闭了查询剩余火车票的服务类别。在2009年6月4F1的时候,上海铁路局开通了网上预约服务,注册用户可以选择车次,填写订票需求,在10天内到达上海火车站,上海火车南站预订到各列车的原产国机票预订车票后,也完成了送货上门。现如今,国内外都普遍应用售票系统。开发应用售票系统起步最早的还是国外,特别是,国外一般通讯发达,所以人部分售票系统的结构侧重于使用的主机/终端模式。欧洲的情况更加适应这种结构。然而,中国主要用于集中开发和分散式的现代客户端・服务器体系结构的组合。但这种结构的方式还不能完全满足国家网络数据库。所以现在我们在勘探和开发的发展,进一步改善售票系统。现在,中国的票务系统的发展方向是系统的,出中央,区域和站级组成的三级结构。包括我们的票务中心管理系统,票务中心管理系统和车站电子售票系统。然而,上述系统,是中国新的课题正在研究和开发的方向,我们有理由相信未來各个火车票的代售点都将使用,采用新的票务系统将标志着中国铁路客运达成世界铁路客运水平的新高峰,英至前列。1・3研究的主要内容火车票联网售票是一项极大的便民措施,主要研究工作如下:1.对火车票订购的业务流程进行深入研究,通过细致的业务调研以及与铁路部门相关主要管理人员和相关系统的最终用户的访谈,仔细研究并落实火车订购系统的总体业务实施流程和各个业务环节的细节情况。2•研究火车订购系统主要目标用户对原有火车票订购业务实施过程中的问题和意见,收集用户对系统的目标需求,做出系统的需求分析文档,明确系统的建设目标,为系统的设计工作打下基础。3•研究火车票订购系统构建过程屮的技术重点及难点问题,包括研究如何利用而向对彖的方法分析和完成整个系统的开发,研究如何使用JSP技术展示友好界而以及获取传递请求以及相应信息,研究如何在SSH框架的基础上实现web项目的表示层、业务逻辑层以及数据访问层三层架构,研究如何实现Oracle数据库与系统Z间的连接访问以及如何利用关系型数据库实现对彖和对彖之间的依赖关系。4.研究目标系统的功能模块的设计,尽量充分利用现有资源,提高系统开发水平和应用效果。系统应完全符合铁路部门对火车售票工作的规定,满足客户的在线车票查 询、车次车站查询、余票查询、用户注册以及登录、用户订单生成、车票的改签与退定以及用户个人信息管理包括常用联系人的添加与删除、个人信息修改以及账号安全的保证等业务需求。达到系统操作过程的直观、便捷、实用等要求。进行模块的合理划分和功能的界定,并对每个模块的具体业务流程进行设计、编码实现以及结构与功能测试。1.4论文组织结构第一章是绪论内容,首先列出的是本文的选题背景和意义,接着介绍了国内外研究的现实状况,Z后给岀了本文研究的主要内容。第二章是本系统采用的相关技术介绍,主要内容包括JSP技术、SSH框架、数据库以及系统采用的结构等方面的简介。第三章是本系统的需求分析内容,包括车票查询、用户注册及登录、余票查询、车站车次查询、用户信息管理等功能性需求,以及易用性、安全性等非功能性需求。第四章是系统总体设计,主要介绍系统总休设计的任务、系统的体系结构、系统的功能模块说明以及数据库设计。第五章是系统详细设计与实现,介绍的内容为系统各个功能模块的详细设计和具体实现。第六章是系统测试,包括系统测试的目的和功能测试相关内容。第七章是总结与展望,主要是对本系统开发过程屮所做的工作进行总结,并结合未来的发展方向表达自己对火车票订购系统的功能期槊。 2相关软件技术介绍2.1JSP技术简介1.1.1JSP基本概念JSP是JavaServerPages的缩写,是有Sun公司唱到、众多公司参与,于1999年推出的一种动态网页技术标准,JSP目前已经能成为J2EE(Java2EnterpriseEdition,Java2企业版)13种核心技术中最重要的一种。在传统的静态页面文件(*.html,*・htm)中加入Java程序片段和JSP标签,就搜成了JSP页面。口从有了JSP后,在Java服务器端编程中普遍采用的就是JSP,而不再是ServletoJSP是基于JavaServlet以及整个Java体系的Web开发技术,利用这一技术可以建立安全的、跨平台的动态网站。这项技术还在不断地被更新和优化。2.1.2JSP页面的执行过程服务器在接收到客户端发來的一个JSP页面请求时,首先由JSP引擎把JSP代码转换成Servlet代码然后又JSP引擎调用该服务器的Java编译器对Servlet代码进行编译,把它编译成字节码文件(.class文件),再由JVM(Java虚拟机)执行次字节码文件,最后将执行结果以HTML格式返冋给客户端。整个JSP页面执行过程如图2・1所示。图中只是可能的步骤中最多的一种情况,实际情况中常常只有最后一步。八务脚I顒E:ijflJSP-43ffJSP+*i,中*凯1r电PA务I蔡:阳解杯frt號JI器tmvn兀心y.枠«门«、姐卜1倚?11务盈图2-1JSP页面执行过程如果在服务器运行当中,开发人员对JSP代码进行了修改,再遇到次JSP页面的请求时,服务器将重新对其转化并编译,并用编译后得到的字节码文件覆盖原來的文件。2.1.3JSP的技术优势 JSP和其它动态网页技术的主要不同点在于它的运行方式和执行速度。当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译成字节码文件,然后通过执行字节码文件响应客户的请求,而当这个JSP页面再次被请求执行时,JSP引擎将直接执行这个字节码文件來响应客户,这也是JSP比ASP运行速度快的一个原因。而JSP页面的首次执行往往由服务器管理者來执行。2.2SSH框架简介SSH为struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。其从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。英屮使用Struts负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层捉供支持,Spring做管理,管理struts和hibernateo2.3数据库简介1.3.1Oracle数据库简介当今社会已经进入信息时代,作为信息管理主要工具的数据库已成为举足轻重的角色。无论是企业、组织的管理,还是电子商务或电子政务等应用系统的管理,都需要数据库的支持。Oracle是目前最流行的关系型数据库管理系统之一,被越來越多的用户在信息系统管理、企业数据处理'Internet和屯子商务网站等领域作为应用数据的后台处理系统。2.3.2SQL简介一、SQL的产生与发展SQL标准从1986年公布以来随着数据库技术的发展不断发展。表2・1是SQL标准的进展过程。 表2・1SQL标准的进展过程标准大致页数发布n期SQL/861986年10月SQL/89(FIPS127-1)120页1989年SQL/92622页1992年SQLL991700页1999年SQL20033600页2003年二、SQL的特点SQL是一个综合的、功能极强同时又简洁易学的语言。SQL集数据查询(DataQuery)、数据操纵(DataManpulation)>数据定义(DataDefinition)和数据控制(DataControl)功能于一体,主要特点包括:1、综合统一2、高度非过程化3、面向集合的操作方式4、以同一种语言结构提供多种使用方式5、语言简洁,易学易用三、SQL的基本概念支持SQL的RDBMS同样支持关系数据库三级模式结构,如图2-2所示。其中外模式对应丁•视图(View)和部分基木表(BaseTable),模式对应于基木白,内模式对应于存储文件(StoredFile)o 外模式模式内模式图2-2SQL对关系数据库模式的支持2.4系统采用结构分析 2.4.1C/S与B/S的比较1.C/S模式早期,网络应用软件的开发采用客户端(Client)服务器(Server)模式,即所谓的C/S模式。这种模式具有两层结构。比如在Java中,可以通过Socket实现一个客户端/服务器的架构。C/S模式的结构如图2・3所示。数据处理逻辑客户机服务器显示―事务处逻辑—理逻辑图2・3C/S模式结构图在这种模式下,主要的业务逻辑都集屮在客户端程序小。由于客户端硬件配置可能存在较大差异,软件环境也有可能各不相同,这就导致了以卜•两大问题:(1)系统安装、调试、维护和升级都比较困难。因为在安装时,必须对每一个客户端分别进行配置;同样,在软件升级是也要对每个客户端分别进行处理。(2)在整个系统中,业务逻辑和用户界面都集中在了客户端,必然会增加安全隐患。2.B/S模式止是由于而面提到的问题,人们接受了基于浏览器(Browser)/®务器(Server)结构的系统。在B/S模式中,最具核心的一点是通用的浏览器取代了客户端程序,其次是将业务逻辑放在了服务器端,并将应用服务器和数据库分离。B/S模式的结构如图2・4所示。客户机显示►事务处1逻辑◄理逻辑*图24B/S模式结构图B/S模带來的好处是巨大的:首先由于客户端统一为浏览器,降低了对客户端的要求;其次应用程序的安装、维护、升级等工作都集中到服务器端,从而降低了维护工作 的复杂性,提高了系统的安全性。2.4.2两层结构与三层结构的比较随着互联网技术的进一步普及和发展,数据库的灵活性、安全性和可拓展性等问题成为数据处理技术的焦点问题。一、两层结构二层计算模式即模式屮客户端提供用户界面、运行逻辑处理应用,数据服务器负责接受客户端语句并对数据库进行查询,然后向客户端返回查询结果。由于业务的处理逻辑主要在客户端执行和完成,因此这种结构也被成为胖客户(Fatclient)结构,如图2-5所用八应用界面I逻辑客户机OA数据库服务器SQL服务器图2・5两层结构应川软件模型图这种胖客户结构最大的优点在于结构简单,开发和运行的环境相对简单。但也正是由于使用这种结构,也产生了一些必然的问题:一是系统的可扩展性问题和安装维护的问题。二是关丁系统的安全性问题。二、三层结构模型三层是将数据处理过程分为三部分第一层是客户端用户界面即表示层,客户端可以捉供用户与系统的友好访问。第二层是应用服务器及业务逻辑层,服务器端可以实现业务逻辑。第三层是数据库服务器即数据访问层,负责数据信息的存储、访问以及优化。由于业务逻辑被提取到应用服务器,这样就可以大大降低了客户端负担,也可以称之为瘦客户(ThinClient)结构,如图2-6所示。口定义协议表示层SQL语言业务逻辑层数据访问层客户机应丿IJ服务器图2・6三层结构应用软件模型数据库服务器 3系统需求分析1.1系统功能性需求分析3.1.1系统总体功能需求概述火车票订购系统需要满足客户以下功能需求:(1)车票查询功能;(2)车站车次查询功能;(3)余票查询功能;(4)票价查询功能;(5)车站查询功能;(6)用户注册及登录功能;(7)用户个人信息管理功能;(8)账户安全管理功能;(9)车票预订功能;(10)车票的改签功能;(11)退票功能;(12)管理员建表和序列功能;(13)管理员对数据的增删改查功能;(14)管理员对系统定期进行功能和性能测试功能;(15)管理员对系统进行维护功能;(16)管理员系统进行升级功能;(17)管理员接收客户反馈意见功能;(18)管理员登录功能;(19)管理员删除列车信息功能;(20)管理员添加列车信息等功能。 2.1.2普通用户功能需求 普通用户即非注册用户,该类用户即使没冇在系统数据库中保存相关的个人信息,但是可以使用本系统进行有关车票信息的相应查询,包括:(1)输入出发日、起始站和目终点站等相关信息,进行车票查询;(2)输入相应列车车次、FI期、起始站、终点站和乘客类型等信息,进行票价查询。(3)输入相应列车车次、日期、起始站和终点站等信息,进行余票查询查询等。(4)输入相应车站和F1期等信息,进行车站查询等。(5)输入相应列车车次和F1期等信息,进行车站车次查询。普通用户用例图如图3・1所示。普通用户图3-1普通用户用例图1.1.3注册用户功能需求注册用户即已通过系统注册的用户,该类用户登录系统后,系统不仅为此类用户提供车票查询、车站车次查询、余票查询、票价查询、车站查询等功能外,还为其提供以下功能:(1)输入起始站、终点站、日期和票种等相关信息,列出符合条件的列车,用户选择相应席位(无座/硕座/软座/硬卧/软卧/高级软卧/二等座/一等座/特等座/商务座)完成车票预订;(2)用户登录系统后,进行个人信息的管理,例如电话号码、乘客类型、登录密码等信息的修改;(3)如果用户忘记密码,可以通过证件号码获取新的密码后再登录;(4)用户登录系统后,根据需要对账户屮常用联系人信息进行添加、删除及修改 等操作;(5)用户登录系统后,依据页面导航信息进行订单的查询;(6)用户登录系统后,可在起始地点和终点地点不变的前提下,选择不同口期进行车票的改签;(7)用户登录系统后,若改变计划,可以在所定列车开车前两小时进行车票退订注册用户用例图如图3-2所示。注册用户1.1.4管理员功能性需求管理员作为系统管理者,承担着火车票订购信息最重要的列车信息管理的责任,是保证用户可以查询到真是准确的列车信息的主要角色。管理员除了要管理系统数据库,即及时插入列车信息和修改列车信息和其他相关的建表和增删改查操作外,还应登录系统管理界而为系统用户增加和删除列车,从而保证系统列车信息尽可能的实时更新,进而满足广大用户能够根据自己的需要,查询车票车次信息和登录系统后订购车票等诸多需求。系统为管理员捉供以下几种功能需求:(1)为系统建立相关数据库表和序列;(2)设置相关数据库权限;(3)对数据库数据信息进行增删改查操作; (4)对系统定期进行功能和性能测试;(5)系统维护;(6)系统升级;(7)接收客户反馈意见;(8)登录系统;(9)登录系统后,添加列乍信息;(10)登录系统后,删除列车信息等。管理员用例图如图3-3所示。图3-3管理员用例图3.2系统非需求功能性需求分析3.2.1系统的易用性需求近年来,随着软件工程学的迅速发展,新一代计算机技术研究的推动,以及网络技术的突飞猛进,人机界面设计和开发已成为国际计算机界最为活跃的研究方向。本系统满足界面的直观性,确保各个年龄层的用户可以自行完成系统基本功能的使用。系统操作逻辑清晰,界面简易而美观,并具有易懂且适量的引导提示功能,使用户感觉愉快、增强兴趣,提高用户的参与性和主动性,从而提高系统的使用效率。1.2.2系统的运行环境需求本系统须在windows系统平台卜-使用,安装的浏览器耍支持AJAX技术。 4系统总体设计4.1系统设计的任务火车票订购系统总体设计的主要任务是系统体系结构设计、系统模块设计及数据库设计。通过系统体系结构设计,使系统在实现过程屮达到各层分公共明确、总体逻辑清晰的目的。进行系统模块设计,可以降低系统复杂性,使Z后系统的实现、测试、维护等操作变得简单易行。模块化设计更有益于信息的隐藏,提高系统的安全性和可靠性。数据库设计则是选用各种不同分析与设计方法的系统必不可少的关键。数据库设计的合理性直接关系到整个系统的实现、运行效率和维护成本。4.2系统体系结构1.2.1系统结构系统采用B/S体系结构,此结构是随着Internet技术的兴起对C/S体系结构进一步改进后的一种结构。要真正意义上实现一个完整的B/S结构应用程序,至少要由浏览器(Browser)>Web服务器(WebServer)>数据库服务器(DBServer)三部分组成。B/S体系结构图如图4・1所示。数据府•服务器图4・1B/S体系结构图本系统开发使用的测试浏览器为火狐浏览器(firefox),使用的服务器则是免费开源的轻量级Web应用服务器tomcat,数据库管理系统使用Oracle。系统使用表示层、业务逻辑层、数据访问层三层架构实现B/S模式的开发。其中, 表示层曲JSP页面负责实现,Action负责获取页面标签属性值和页面转向。业务逻辑层(service层)则处理简单和复杂的业务逻辑,数据访问层(dao层)则利用hibernate参与数据的增删改查。4.2.2功能框架本火车票订购系统由用户注册与登录子系统、注册用户个人信息管理子系统、车票查询子系统、车票预订与订单生成子系统、车票改签及退订子系统、管理员子系统。总体功能模块图如图4・2所示。火车票订购系统用户注册与登录子系统注册用户个人信息管理子系统车票查询了系统车票预订订单牛成子系统车票改签及退订子系统图牛2系统总体功能模块图1.3系统功能模块说明4.3.1用户注册和登录模块用户进入注册界面,填写用户名、密码、确认密码、真实姓名、证件号码、出生口期、性别、电话号码、乘客类型,如果乘客类型选择了“学生”,还需要填写,所在省份、学校名称、学制、乘车区间上下限、学号以及入学年份等相应信息,经系统检验合格后完成注册即可登录系统。注册用户进入登录界面,填写用户名和密码,提交经检验有效后登录系统。1.3.2注册用户个人信息管理模块注册用户登录系统后,在个人主页屮可以查看并修改个人信息,包括电话号码以及乘客类型等信息,达到个人信息可以随时更新的目的。注册用户登录系统后,在个人主页的账号安全屮,且在已知旧密码的前提下修改登 录密码,从而保证账号信息以及个人信息的安全。注册用户可以在自己的账号信息中添加一定数量的常用联系人,为其购票。添加之后如有变动,也可以删除相应常用联系人和编辑常用联系人信息等操作。4.3.3车票查询模块系统所有用户均可进行车票查询,车票查询模块细分又能分岀车票查询、余票查询、车站车次查询等用例。车票查询时序图如图4・3所示。2.3.4车票预订及订单生成模块用户登录系统并产生相应查询结果后,可以根据需求进行车票预订,系统会为之生生成订单,方便用户查看、改签以及退订。4.3.5车票改签及退订模块用户登录系统杳看订单时,可根据需要进行改签操作,但是一张车票只能改签一次。在列车出发而两小时以内以及出发后用户的退票手续不予办理,并且退票时会根据出发H扣除相应手续费,剩余费用则返回用户支付账户,4.3.6管理员模块 管理员登录系统后,可以添加、删除列车信息,从而确保车票的实吋更新。管理员4.4数据库设计4.4.1主要E-R图本系统涉及到的有属性实体有:管理员、注册用户、列车车次、列车、车厢、席位、订单、订单项、席位状态、常用联系人。注册用户属性有:真实姓名、账户余额、用户名、密码、证件号码、性别、出生日期、电话号码、学校省份、学校名称、学号、入学年份、学制、优惠区间、乘客类型。常用联系人属性有:真实姓名、账户余额、id证件号码、性别、出生日期、电话号码、学校省份、学校名称、学号、入学年份、学制、优惠区间、乘客类型。列车车次属性有:车次、价格、站点、席位信息、行车时间、列车类型、停留时长、丿力时、车厢席位数。列车属性有:id.出发日期、列车车次。 车厢属性有:车厢号、id、列车车次、车厢类型。席位属性有:席位类型、列车车次、id、车厢号、席位号。席位状态属性有:id、车站、席位号、状态。订单属性有:订单FI期、订单号、用户。管理员属性有:id.登录名、密码。订单项属性有:id、收项口期、常用联系人、订单□期、价格、出发13期、出发时间、到达时间、车票状态、起始站、终点站、票种、订单号、席位号。系统总体E-R图如图4-5所示。管理员mn—n避—车厢席位注册用户1订单项11席位状态常用联系人图4-5总体E-R图4.4.2系统数据库表1.用户注册表users存放注册用户信息,见表4・1。管理员表managers存放管理员信息,见表4-2o 表4-1注册用八数据库表users字段名字段类型约束或索引描述idvarchar2(10)Pk证件号码namevarchar2(20)unique用户名usernamevarchar2(10)notnull真实姓名passwordvarchar2(40)notnullMD5加密密码gendervarchar2(10)notnull性别male或femalebirthdaydatenotnull出生II期phoneNumbervarchar2(15)电话号码userTypevarchar2(10)notnull乘客类型schoolProvincevarchar2(20)学校所在省份schoolNamevarchar2(50)学校名称schoolNumbervarchar2(10)学号schoolStartYearvarchar2(4)入学年份schoolLengthnumber学制highStationvarchar2(20)优惠区间上限lowStationvarchar2(20)优惠区间下限accountvarchar2(15)notnull账户余额表4-2管理员数据库表managers字段名字段类型约束或索引描述idvarchar2(10)Pk唯一•标识管理员namevarchar2(20)unique登录名passwordvarchar2(40)notnull登录密码1.列车表trains存放列车信息,见表4-3o表4-3列午年次数据库表trains字段名字段类型约束或索引描述idnumberPk数据库口动生成startDatedatenotnull出发日期trainlnfoidvarchar2(10)fknotnull参照traininfos表主键id2.常用联系人friendUsers存放联系人信息,见表4-4□表4-4常用联系人数据库表friendUsers 字段名字段类型约束或索引描述idnumberPk数据库自动生成cardIdvarchar2(10)notnull证件号码usernamevarchar2(10)notnull真实姓名gendervarchar2(10)notnull,性另I」male^Kfemalebirthdaydatenotnull出生日期phoncNumbervarchar2(15)电话号码userTypevarchar2(10)notnull乘客类型schoolProvinccvarchar2(20)学校所在省份schoolNamevarchar2(50)学校名称schoolNumbervarchar2(10)学号schoolStartYearvarchar2(4)入7年份schoolLensthnumber学制highStationvarchar2(20)优惠区间上限lowStationvarchar2(20)优惠区间下限useridvarchar2(10)fknotnull参照users表id主键1.车厢表carriages存放车厢信息,见表4-5o表4-5车厢数据库表carriages字段名字段类型约束或索引描述idnumberPk数据库口动生成carriageNumbervarchar2(4)notnull车厢号trainidnumberfknotnull参照trains表主键idcarriageTypevarchar2(10)notnull车厢类型2.订单表orders存放订单信息,见表4・6。表4-6订单数据库表orders字段名字段类型约束或索引描述idnumberPk数据库口动生成useridvarchar2(10)fknotnull参照users表主键idorderDatedatenotnull订单日期3.列车车次表traininfos存放列车车次等具体信息,见表4・7。表4-7列车车次数据库表traininfos 字段名字段类型约束或索引描述idvarchar2(10)pk列车车次pricevarchar2(400)notnull车票价格stationsvarchar2(200)notnull站点start」eavetimesvarchar2(300)notnull出发和停车时间trainTypevarchar2(5)notnull列车类型stoplntcrvalvarchar2(50)notnull停车间隔runTimesvarchar2(100)notnull历时positionTypcvarchar2(20)notnull席位类型cpnumbervarchar2(100)notnull车厢席位数1.席位表positions存放车厢信息,见表4-8o表4-8席位数据库表positions字段名字段类型约束或索引描述idnumberpk数据库自动生成positionNumbervarchar2(4)notnull席位号trainidnumberfknotnull参照trains表主键idpositionTypevarchar2(5)席位类型,针对卧铺类席位carriageidnumbernotnull参照carriages表主键id2.席位状态表positionStates存放各站点席位是否被占用即状态信息,见表4-9□表4-9席位数据库表positionStates字段名字段类型约束或索引描述idnumberPk数据库白动生成positionNumbervarchar2(4)notnull席位号train」dnumberfknotnull参照trains表主键idstatevarchar2(5)notnull席位状态0或1positionTypevarchar2(5)席位类型,针对卧铺类席位carriageidnumbernotnull参照carriages表主键idstationFlagvarchar2(200)notnull与state共同标记是否被占用3.订单项表ordeHtems存放订单项信息,见表4・10。表4-10当单项数据库表orderltems字段名字段类型约束或索引描述 idnumberPk自动牛成orderltemsDatedatenotnull订单项口期(订票日期)startDatedatenotnull出发日期startTimevarchar2(8)notnull出发时间endTimevarchar2(8)notnull到达时间startStationvarchar2(20)notnull出发地cndStationvarchar2(20)notnull目的地pricevarchar2(8)notnull价格ordcridnumberfknotnull参照orders表主键i(1friendUseridnumberfknotnull参照friendUsers表主键idpositionTypevarchar2(5)席位类型(上中下)userTypevarchar2(10)notnull票种firstDatedatenotnull首单日期,供手续费扣除参考tickectStatevarchar2(8)notnull车票类型(可(已)改签、(已)可退票)5系统详细设计与实现5.1用户注册与登录模块 5.1.1注册模块设计与实现一、注册模块的详细设计注册模块的业务逻辑算法流程图如图5-1所示。用户填写完注册信息后,通过js校验、验证码验证等方可完成注册。▼(结束)图5-1注册模块逻辑算法流程图二、注册模块的实现注册模块的表示层±register.jsp负责,在页面要求填写的信息有:用户名、密码、确认密码、真实姓名、证件号码、出生H期、性别、电话号码、乘客类型,如果乘客类型选择了“学生”,还需要填写,所在省份、学校名称、学制、乘车区间上下限、学号以及入学年份。业务逻辑service层通过UserService接II的实现类中的registeUser(Useruser) 方法实现,在其屮调用数据访问dao层接口UserDao的实现类屮的saveUser(Useruser*)和saveFriendUser(FriendUserfriendUser)方法将用户的注册信息保存到数据库,并将用户本人作为其账号信息中的第一个常用联系人保存到数据库中。注册信息中的登录密码字段,则是通过特殊的加密算法加密后在保存到数据库。即使是数据库管理人员,也只能看到密码加密后的密文,无法查看到明文密码,进一步保证了账号信息的安全性。当乘客类型选择了“学生”后,会引起registerCheck.js文件中select()事件(方法)触发。此时学生类型用户注册信息要求会比成人用户信息多几列,以保证学生能根据学生证正确取票。其中用户名的验证运用到AJAX技术,从后台获取所有用户名,从而判断该用户名是否注册。如果己被注册,该列最后会显示岀红色字体“该用户名已被注册”,起到提示用户的作用。用户看见后便能进行及吋的更改。不必要在提交表单之后再反馈给用户。点击“提交'按钮后,会将表单请求发送到名为regist实为RegistAction的由struts2技术实现的RegistAction类中,从而获取请求数据,调用UserService中的业务逻辑方法registeUser(Useruser*)实现用户注册,最后action通过不同的返回值來控制页面的跳转。如果注册成功,则跳转到1ogin.jsp页面,并提示用户登录系统,否则将继续冋到register.jsp页面,并提示用户重新注册。业务逻辑部分代码如下所示:publicvoidregister(Useruser)throwsException{Useru=dao.findUserByName(user.getName());if(u!=null){thrownewRuntimeException(;该用户名已被注册!”);}else{user.setAccount(H10000");FriendUserfriendUser=newFriendUser();〃将本人作为联系人之一为所有属性赋值创建第一联系人并存储user.getFriendUsers().add(friendUser);dao.saveFriendUser(friendUser);dao.saveUser(user); 5.1.2登录及自动登录模块设计与实现 一、登录及自动登录模块的详细设计登录及自动登录模块的业务逻辑算法流程图如图5・2所示。填写完登录信息后通过js校验、验证码验证和后台验证等方町完成登录。自动登录为可选项,如选择,则下次进入系统首页无需再次登录,后台会直接总浏览器的cookie中获取登录信息。从而实现自动登录。图5-2登录及口动登录模块逻辑算法流程图二、登录及自动登录模块的实现登录及自动登录模块的表示层曲login.jsp负责,在此页面需要填写的信息有:用户名、密码以及验证码,自动登录选项作为可选项出现,如果需要,选中即可。同时还提供了注册和密码找冋的快捷链接。业务逻辑service层通过UserService接口的实现类中的login(name,password)方法实现,在其中调用数据访问dao层接口UserDao的实现类中的findUserByName(name), 如果在数据库中查找到相应注册用户对象,则登录成功,LoginAction负责将页面跳转到individualPagejsp页面,进入个人主页,从而实现个人信息管理,订票、改签、退票、查询等个人需求;否则登录失败,action将页面重新跳转到login.jsp页面,并提示用户重新登录。如果用户在登录吋选择了自动登录单选框,后台则会将用户的账号和密码信息保存在客户端浏览器的cookie中,这样,用户进入系统的index.jsp页面时,会实现自动登录。登录与自动登录模块业务逻辑部分代码如下所示:publicUserlogin(Stringname,Stringpassword)throwsException{Useruser=null;try{user=dao.findUserByName(name);if(user==null){thrownewException("用户不存在”);}else{//判断密码if(!user.getPassword().equals(MD5.getMD5Str(password))){//密码错误user=null;thrownewException^密码错误”);5.1.3密码找回模块设计与实现一、密码找回模块的详细设计密码找回模块的业务逻辑算法流程图5-3所示。密码找回是在用户登录时忘记密码的情况下,凭借用户名和证件号码通过js校验、验证码验证和后台验证等获得系统随 图5・3密码找回模块逻辑算法流程图二、密码找回模块的实现密码找回是在用户登录时忘记密码的情况下,凭借用户名和证件号码获得系统随机产生的六位数密码,从而在忘记密码时也能实现系统登录。密码找回模块的表示层曲pwdMissing.jsp负责,业务逻辑sevice层通过UserService接口的实现类中的pwdMissing(name,user_id)方法实现,在其中调用数据访问dao层接口UserDao的实现类中的findUserByName(name)方法。如果用户输入的用户名和证件号码匹配,系统则会随机生成六位数密码再次进行加密算法加密插入到数据库中,并出PwdMissingAction类负责将页面跳转到login.jsp,并提示新生成的六位数明文随机密码,用户在得知新密码的前提下登录系统。如果用户输入的用户名和证件号码冇误‘action会将页面返回至pwdMissing.jsp页面,并提示用户错误信息。随机密码提示如图5・4所示。新玄码为:989292隽登灵确定 密码找回模块业务逻辑代码如下所示:publicUserpwdMissing(Stringname,Stringid)throwsException{Useruser=null;try{user=dao.findUserByName(name);if(user==null){thrownewException("用户不存在”);}else{//判断证件号码if(!user.getld().equals(id)){//证件号码错误user=null;thrownewException^证件号码错误”);5.2注册用户个人信息管理模块5.2.1个人信息修改模块设计与实现一、个人信息修改模块的详细设计个人信息修改模块的逻辑算法流程图如图5・5所示。用户登录信息后,按照导航栏的捉示信息进入个人信息管理页面进行个人信息的查看和修改。 图5-5个人信息修改逻辑算法流程图二、个人信息修改模块的实现注册用户登录后,可以在界面左侧导航栏中选中“个人信息查看/修改二在显示出的信息中查看个人信息,也可根据需求修改允许修改的信息。个人信息修改模块的表示层曲individuallnformation.jsp负责,业务逻辑service层通过UserService接口的实现类中的modifyUserlnfonnatiorKuser)方法实现,在其中调用数据访问dao层接口UserDao的实现类中的saveFriendUser(friendUser)^UsaveUser(user)方法。用户口J以修改自己的乘客类型和电话号码等信息,修改后数据库进行相应更新,并把新的用户保存在session中。个人信息修改模块业务逻辑部分代码如下:publicvoidmodifyUserInformation(Useruser)throwsException{for(FriendUserfriendUser:user.getFriendUsers()){if(friendUser.getCai*dId().equals(user.getld())){friendUser.setHighStation(user.getHighStation());friendUser.setLowStation(use匚getLowStation());friendUseisetPhoneNumber(use匚getPhoneNumber());dao.saveFriendUser(friendUser);break;}dao.saveUser(user);}5.2.2常用联系人模块设计与实现一、常用联系人模块的详细设计常用联系人模块的逻辑算法流程图5-6所示。分别是常用联系人的添加、删除和修改涉及到的流程图。 图5-6常用联系人模块逻辑算法流程图二、常用联系人模块的实现常用联系人模块分为常用联系人列表,增加常用联系人、删除常用联系人、编辑常用联系人信息等子模块。用户登录后选择左侧导航栏中的“常用联系人",则会显示用户添加的所有常用联系人列表信息。常用联系人列表表示层由friendUsers.jsp页面显示,friendUsers.jsp页面如图5-7所示。页面右上角的两个按钮单击后进行全部选择和全部取消操作。用户单击“增加''左边的绿色按钮后进入addFriend.jsp页面口J以添加常用联系人,填写常用联系人的真实姓名、证件号码、性别、出生口期、乘客类型、电话号码等信息,如果是学生类型,还要为其添加所在省份、学校名称、学号、学制、乘车区间上下限和入学年份等学生信息,填写完成后将表单提交到AddFriendAction,进一步调用业务逻辑service层通过UserService接口的实现类中的addFriendUser(user,friendUser)方法实现,在其中调用数据访问dao层接口UserDao的实现类中的saveFriendUser(friendUser)^IJsaveUser(user)方法添加常用联系人并更新用户信息。将更新后的用户重新保留到session中,之后AddFriendAction会负责将页面跳转到friendUsers・jsp页面,显示更新后的常用联系人列表信息。你好,yangzhao|退出,送的主] 车礙杏询预订余瀬宵向车站车次吉向SS价杳询车次宵询I常用联系人角的火车3?o壇加O删隙eo序号姓爸证件号码电话号码型琐作□1123432154515546787650adulta□2李丽21356478091J45348971adultQ个人fSJS3123456789018334701732student杳百/悴改个人信口京用联疾人图5・7friendUsers.jsp页面增加常用联系人业务逻辑部分代码如下:publicUseraddFriendUser(Useruser,FriendUserfriendUser)throwsException{try{friendUser.setUser(user);dao.saveFriendUser(friendUser);user.getFriendUsers().add(friendUser);dao.saveUser(user);}catch(Exceptione){returnnull;}returnuser;}用户选中相应序号的联系人,再点击“删除"左边的绿色按钮,进入DeleteFriendAction中调用业务逻辑层,业务逻辑service层通过UserSeivice接口的实现类中的deleteFriendUser(friendUser)方法实现,在其中调用数据访问dao层接口UserDao的实现类中的deleteFriendUser(friendUserld)等方法实现常用联系人的删除。联系人删除后,与之关联的用户也要做相应更新,并将更新后的用户信息保存到session中,删除完成后action会跳转到friendUsers.jsp页面显示更新后的常用联系人列表信息。删除常用联系人业务逻辑核心代码如下:publicUserdeleteFriendUser(Useruser,StringfriendUserld)throwsException{Useruserl=null; try{〃先将联系人从用户中移除,再删除联系人。returnuserl;}除用户本身外的其它常用联系人信息都口J以编辑,单击相应常用联系人所在行操作列的按钮,进入modifyFriendlnformation.jsp页面查看并编辑该常用联系人信息,进入ModifyFriendlnformationAction中调用业务逻辑层,业务逻辑service层通过UserService接口的实现类中的modifyFriendInfonnation(fi*ieiKiUsei*)方法实现,在其中调用数据访问dao层接口UseriDao的实现类中的saveFriendUser(friendUser)等方法实现常用联系人信息的编辑。如果更新成功,与之关联的用户也要做相应更新,并将更新后的用户信息保留到session中。编辑后action负责将页面跳转到modifyFriendlnfoiTnation.jsp页面,首先提示是否更新成功,并显示更新或未更新的联系人信息。编辑联系人信息的业务逻辑核心代码如下:publicMapmodifyFriendInformation(FriendUserfriendUser)throwsException{Useruser=null;FriendUserfriendUserl=null;Mapmap=newHashMap(0);try{friendUserl=dao.findFriendByld(friendUser.getldO);friendUserl.setHighStation(friendUse匚getHighStation());returnmap;5.2.3订单查询模块设计与实现一、订单查询模块的详细设计订单查询模块的逻辑算法流程图如图5・8所示。用户登录信息后,按照导航栏的提示信息进入订单查询页面进行查询所有订单和每个订单所属的订单项信息。 图5-8订单杏询模块逻辑算法流程图二、订单查询模块的实现订单查询主要是从保存在session中的user对象中取出Order类型的Set集合,遍历此集合,并且遍历每个订单对应的订单项OrdeHtem类型的集合,从而实现用户订单的查询。用户登录后选择左侧导航栏中的“我的订单J则会显示用户所冇的订单列表信息。订单列表表示层由myOrder.jsp页面显示,每个订单町以展开和收起,便于查看。订单中列出了订单号、订单F1期、起始站及终点站等信息。每一个订单项则包括列车车次信息、出发口期、起始站及终点站、开车时间及停车时间、历时、席位信息(车厢号、席位号及席位类别)、票种、价格、车票状态(告知是否可进行改签和退票)以及操作(改签及退票)。5.3车票查询模块5.3.1余票查询模块设计与实现一、余票查询模块的详细设计余票查询模块逻辑算法流程图如图5・9所示。用户填写完日期、起始站和终点站等查询信息提交后,会显示符合查询条件的所有列车的车次、出发日期、和应的起始站和终点站、出发时间和到达时间、历时、每种席位所剩的票数。 图5-9余票杳询逻辑算法流程图二、余票查询模块的实现余票查询是系统为普通用户和注册用户提供的功能服务。用户在remaininglnquire.jsp页面后填写完□期、起始站和终点站等查询信息后,提交到RemaininglnquireAction进行处理,在其中调用业务逻辑层,业务逻辑service层通过UserService接口的实现类中的simplelnquire(...)和getRemainingTicketNum(...)方法实现,进而调用数据访问dao层接口UserDao的实现类中的findTrains(leave_day)和getRemainingTicketNum(t,stationFlag)等方法,返回相应对象和数据信息,从而实现余票查询。Action会将查询结果通过showRemaininglnquireResult.jsp页面反馈给用户。本页面包括符合查询条件的所有列车的车次、出发□期、相应的起始站和终点站、岀发时间和到达时间、历时、每种席位所剩的票数。余票查询业务逻辑核心代码如下所示:publicLong[]getRemainingTicketNum(Traint,Stringleave_station,Stringdestination)throwsException{Long[]num=newLong[10];try{for(intj=1;j<=stationFlag.length;j++){stationFlag[j-l]=stationFlag2[j-l]+,T'+stationFlag2[j];num=dao.getRemainingTicketNum(t,stationFlag);5.3.2票价查询模块设计与实现 一、票价查询模块的详细设计票价查询模块的逻辑算法流程图如图5-10所示。用户填写完出发H期、起始站、终点站及票中等查询信息捉交后,会显示符合查询条件的列车的车次、出发H期、相应的起始站和终点站、出发时间和到达时间、历时•、不同席位对应的票价,也清晰地显示岀上中下铺票价。图5-10栗价查询模块逻辑算法流程图二、票价查询模块的实现票价查询查询也是系统为普通用户和注册用户提供的功能服务。用户在pricelnquire.jsp页而后填写完出发日期、起始站、终点站及票屮等查询信息后,捉交到PricelnquireAction进行处理,在其屮调用业务逻辑service层,业务逻辑service层通过UserService接口的实现类中的simplelnquire(...)和getTicketPrice(...)方法实现,进而调用数据访问dao层接口UserDao的实现类屮的findTrains(leave_day)方法,返回相应对彖和数据信息,从1何实现票价查询。Action会将查询结果通过showPricelnquireResult.jsp页面反馈给用户。本页面会显示所有符合查询条件的列车的车次、出发H期、相应的起始站和终点站、出发时间和到达时间、丿力时、不同席位对应的票价,也清晰地显示出上中下铺票价。不同票种的票价存在差异,被系统捉供了两种票种,一种是成人票,一种是学生票。学生票价是在成人票价最低席位级别的基础上扣除一半的价格。并且某些席位不捉供学生票,例如软卧、高级软卧、一等座和商务座。票价查询的业务逻辑核心代码如下所示:publicMapgetTicketPrice(Traintrain,Stringleave_station,Stringdestination,StringuserType)throwsException{Mapmap=newHashMap();try{fbr(inti=0;igetRunTime(...)和getTrainType(...)方法实现,进而调用数据访问dao层接口UseiDao的实现类中的findTrains(…)方法,返回相应对象和数据信息,显示特定口期经过某一地点的所有列车信息,从而实现车站车次查询。Action会将查询结果通过showStationldlnquireResult.jsp页面反馈给用户。本页面会显示所冇所查口期当天通过所查站的所有列车的车次、出发F1期、列车类型、所查站到达和驶离时间以及从起始站到达所查站的历时。车站车次的业务逻辑核心代码如下所示:publicListstationIdInquire(Stringstation,Dateleave_day)throwsException{Listlist=newArrayList();try{Listlistl=dao.findTrains(leave_day);5.3.4车次查询模块设计与实现一、车次查询模块的详细设计车次查询模块逻辑算法流程图如图5J2所示。用户填写完H期、车次等查询信息捉交后,会显示查询日期当天所查列车的车次、出发H期、相应的起始站和终点站、出发时间和到达时间以及各个席别所剩票数。用户单击“站点详情对安钮后,会显示列车各图5-12车次查询模块逻辑算法流程图站详细的站点信息。*(结束) 二、车次查询模块的实现车次查询也是系统为普通用户和注册用户提供的功能服务。用户在trainldlnquire.jsp页面后填场完口期、车次等查询信息后,提交到TrainldlnquireAction进彳亍处理,在其中调用业务逻辑层,业务逻辑service层通过UseiService接II的实现类中的trainldlnfolnquire(...)>getRunTime(...)和getRemainingTicketNum(...)方法实现,进而调用数据访问dao层接口UserDao的实现类屮的findTrainByTrainInfoId(trainInfoId,leave_day)方法,返回相应对象和数据信息,包括相应车次列车的基本信息以及各站点的详细信息。Action会将杳询结果通过showTrainldlnquireResult.jsp页面反馈给用户。用户单击“站点详情”按钮后,会显示列车各站详细的站点信息。showTrainldlnquireResult.jsp页血如图5-13出发时间冶发站终点站出发时间到达时间历时商务座僚座T座二等座高级如硬卧KI2016-06-2021:1521:272伽12分^■•■■■•■•・•165K36张■■60%15张站点详情图5-13showtTrainldlnquireResult.jsp贝面车次查询的业务逻辑层和数据访问层核心代码如下所示:publicTraintrainIdInfoInquire(Stringtraininfold,Dateleave_day)throwsException{Traintrain=null;try{train=dao.findTrainByTrainInfoId(trainInfoId,leave_day);}catch(Exceptione){5.4车票预订及订单生成模块5.4.1车票预订模块设计与实现一、车票预订模块的详细设计车票预订模块逻辑算法流程图如图5・14所示。用户查询页面填好出发日期、起始站、终点站、票种等查询信息提交后,会显示符合查询条件的所有列车的车次、出发日期、相应的起始站和终点站、出发时间和到达时间、历时、每种席位所剩的票数。 (开始)点击顶端导肌栏中7栗件训叮广進接.MAsimplelfKjuiTe.jsp*/输入杳询信息/符合件询信息的列乍*点击相应列车的“预订”惟接No->Yes跳转到lOgiflljSp^示用户登录MAonderjsp瓦Uli进廿忙票旗订(结束)用户登录系统图5・14车票预订模块算法流程图二、车票预订模块的实现在进行车票预订前先要输入车票信息,进行车票查询。车票查询的表示层由simplelnquire.jsp页面负责,用户在查询页面填好出发日期、起始站、终点站、票种等查询信息后,提交到SimplelnquireAction进行处理,action获取表单信息后,在其中调用业务逻辑service层,业务逻辑层通过UserService接口的实现类中的simplelnquire(...)和getRemainingTicketNum(..方法实现,进而调用数拯访问dao层接口UserDao的实现类中的findTrains(leave_day)^ngetRemainingTicketNum(t,stationFlag)等方法,将符合查询要求的所有列车的信息,通过showSimplelnquireResult.jsp贝面清晰地反馈给用户。页面显示的内容冇:符合查询条件的所有列车的车次、出发FI期、相应的起始站和终点站、出发时间和到达时间、历时、每种席位所剩的票数。用户点击相应列车对应的“预订"按钮,会跳转到order.jsp页面根据需要为常用联系人预定此列车相应席位相应票种的车票。但前提是用户已经登录火车票的订购系统。如果用户没有登录系统,action则会将页面跳转到login.jsp页面,要求用户必须登录系统才能完成车票预订。由此可知,车票预订、改签及退票操作要求用户必须完成系统注册,登录系统后才能实现以上功能。order.jsp如图5-15所示。2016-06-20K1次哈尔滨站(01:54开)-北京站(21:27到)无座(¥丄95・0)有票硬座(¥丄95・0)有票硬臣卜(¥384.0)有票软臣卜(¥581.0)有票口杨钊口李丽□张三席别II1 成人亲21||删除|验证码:|題瞬8朋提交订单图5・15order.jsp在order.jsp页面用到了AJAX和jQuery技术,AJAX负责将用户预订类车的席位类别得到,并在前台显示,jQuery作为js的函数库,用到了其中的remove。方法,将多余的常用联系人列移除。车票预订模块业务逻辑核心代码如下:publicListsimpleInquire(Stringleave_station,Stringdestination,Dateleave_day)throwsException{Listlist=newArrayList();try{Listlistl=newArrayList();listl=dao.findTrains(leave_day);for(Trainl:listl){Stringstations=LgetTrainInfo()map,StringfriendUsers,HttpServletRequestservletRequest,StringstartStation,StringendStation,StringstartTime,StringendTime)throwsException{try{〃获取前台请求信息Setoi=friendUse匚getOrdeHtems();for(OrderItemo:oi){//将订单项各个属性一一赋值//为常用联系人随机分配相应席位〃若是学生票票价减半returnmap1;5.5车票改签及退订模块5.5.1车票改签模块设计与实现一、车票改签模块的详细设计车票改签模块的逻辑算法流程图如图5-18所示。用户进入改签入口,在不改变车票的出发地和目的地,改变出行H期的前捉下实现车票改签,并按照多退少补原则修改用户的账户余额。(开始)¥ 图5-18车栗改签逻辑算法流程图二、车票改签模块的实现车票改签是指用户在下单Z后,没冇进行任何改签的前捉下(故要求改签只能冇一次机会),不改变车票的出发地和目的地,改变出行日期,生成信息订单项即车票信息。用户可以在刚预定后的finishedOrder.jsp页面和myOrder.jsp页面进行车票改签操作,点击某个订单项后的改签链接,信息将捉交到ChangeOrderltemAction,action获取请求信息后,再交给业务逻辑层进行处理。业务逻辑service层通过UserSewice接口的实现类屮的changeTicket(...)方法实现,进而调用数据访问dao层接口UserDao的实现类屮的changePoistion(...)等方法,实现改签。订单项的状态字段冇三种值,1代表可改签可退票,2代表已改签可退票,3代表已退票。这说明,只要订单项状态为1,用户则可实现该订单项的改签功能。改签会使得与之关联的席位、列车和用户等对象发生变化,故将所有与之关联的对象信息进行更新,再把更新后的用户信息保存在session中。改签成功后‘action会跳转到finishedOrder.jsp显示改签后的订单项所属的订单。用户也可在“我的订单"中查询改签信息。改签后,车票状态会发生相应变化,用户可以进行的操作也会改变。改签后操作中就不会提供改签链接,故用户无法再对已改签后的车票进行二次改签。车票改签后会根据前后票价差价按照多退少补原则更改用户余额。车票改签模块业务逻辑核心代码如下:publicMapchangeTicket(Useruser,intorderld,intorderltemld,Traintrain,StringstartDate,MappriceMap,StringstartStation,StringendStation,StringstartTime,StringendTime,StringpositionType,StringuserType)throwsException{ //TODOAuto-generatedmethodstubMapmap=newHashMap();try{〃获取需要改签的订单dao.changePoistion(oldPosition,orderItem.getStartStation(),orderItem.getEndStation0);〃将订单项原始不变信息先保留,更改票价、席位等属性后存储dao.saveOrderltem(orderltem);map.put(user2,order2);}catch(Exceptione){5.5.2车票退订模块设计与实现一、车票退订模块的详细设计车票退订模块的逻辑算法流程图如图5・19所示。用户进入退票入口,点击退票后, 将请求传到后台,通过后台判断是否符合退票条件,如符合,按照首项口期距退票口期二、车票退订模块的实现用户可以在列车开车之前的2小时办理退票手续,并根据距离第一次订票的开车仃期的长短扣除相应的手续费,15天以上不扌II除任何手续费,15天以内2天以上扌II除票价5%的手续费,2天以内一天以上扌II除票价10%的手续费,一天以内2小时以上,扌II除票价20%的手续费。退票入口同改签入口在同一页面,点击“退票J会将请求信息提交到ReturnTicketAction,action调用业务逻辑service层,业务逻辑层通过UserService接口的实现类中的returnTicket(...)方法实现,进而调用数据访问dao层接口UserDao的实现类中的saveOrderItem(...)^方法更新车票状态信息,并将座位释放。退票操作也会影响与之关联的常用联系人,将常用联系人信息更新后,还需要将与常用联系人关联的用户信息更新,并将更新后的用户信息保存session中。车票退订模块业务逻辑核心代码如下所示:publicMapmap=newHashMap();MapsaveCarriage(...)和saveTrain(...)等方法将列车添加到数据库中,完成添加后action会将页面跳转到showAddTrain.jsp页面显示添加后的列车信息。包括列车的车次、出发口期、相应的起始站和终点站、出发时间和到达时间、历时、每种席位添加的票数。列车添加模块的业务逻辑核心代码如下所示:publicMapaddTrain(DatestartDate,Stringidlnfo)throwsException{//TODOAuto-generatedmethodstubTraininfotraininfo=null;Traintrain=newTrain();Mapmap=newHashMap();//all_c_numbers存储一列车上各种席位对应的总数int[]all_c_numbers=newint[10];try{〃为列车添加车厢、席位、席位信息等关联对象、并将列车信息对象保存在 属性中。5.6.2列车删除模块设计与实现一、列车删除模块的详细设计列车删除模块的逻辑算法流程图如图5・22所示。。管理员登录系统,在删除列车界而输入H期并选择车次捉交后,通过后台判断删除列车。如果列车不存在,会弹岀相应的提示对话框,提示列车不存在。如果删除成功,则弹出提示对话框提示删除成功。(开始)▼(结束)图5・22列车删除模块逻辑算法流程图二、列车删除模块的实现管理员登录系统后,删除已经过期的列车信息,表示层deleteTrain.jsp页而外观同addTrain.jsp外观相同,不同的是deleteTrain.jsp将表单信息提交至!jDeleteTrainAction,action调用业务逻辑service层ManagerService接口的实现类中的方法deleteTrain(startDate,idInfo),进|佃调用数据访问dao层ManagerDao接口的实现类屮的deletePosition(...)>deletePositionState(...)>deleteCarriage(...)和deleteTrain(…)等方法,将所有与该列车相关的车厢、席位、席位状态以及与之和关联的订单项对象全部删除。删除后返回deleteTrain.jsp页而并返回提示信息。列车删除模块的业务逻辑核心代码如下所示:publicTraininfodeleteTrain(DatestartDate,Stringidlnfo){//TODOAuto-generatedmethodstub Traininfotraininfol=null;try{Traintrain=managerDao.findTrain(startDate,idlnfo);Traininfotraininfo=train.getTrainInfo();Settrains=trainInfo.getTrains();for(Positionposition:train.getPositions()){for(OrderItemorderItem:position.getOrderItems()){〃删除列车以及与之相关的车厢、席位、席位状态、订单项等〃将列车从所属列车信息中移除 6系统测试6.1系统测试的目的通过对系统各个模块做结构和功能测试,不断改正系统实现过程中的错误,进而完善系统功能,从而满足客户需求。系统测试也有利于后期对系统的升级和维护。6.2系统的功能测试6.2.1用户注册与登录功能测试用户注册用户名耍求不能为空,测试用例如表6・1所示。表6・1注册用户用户名测试用例用例…用例二测试用例空yangzhao测试结果提示不能为空通过用户注册密码要求不能为空,且由数字或者字母组成,长度在10-20Z间测试用例如表6-2所不。表6-2注册用户密码测试用例用例…用例二用例三用例四用例五测试用例空12123456adffgy540479302412345$awer12345kyf67890测试提示不提示格提示格提示格通过结果能为空式错误式错误式错误用户注册确认密码要求与密码一致,在密码为12345kyf67890的前提下,测试用例如表6-3所示。表6-3注册川户确认密码测试川例用例一用例二用例三测试用例空1234567890ry12345kyf67890 测试结果提示两次密码不一致提示两次密码不一致提示两次密码不一致 表64注册用户证件号码测试用例用例一用例二用例三用例四用例五测试用例空123451234567890098123456789a1234567890测试结果提示不能为空提示格式错误提示格式错误提示格式错误通过用户注册真实姓名要求不能为空,测试用例如表6-5所示。表6-5注册用户真实姓名测试用例用例一用例二测试用例空杨钊测试结果提示不能为空通过用户注册电话号码可为空,测试用例如表6・6所示。表6-6注册用户电话号码测试用例用例…用例二测试用例空18334701732测试结果通过通过用户注册乘客类型有两种,“学生特旷成人=测试用例如表6・7所示。表6-7注册用户乘客类型测试用例用例…用例二测试用例学生成人测试结果通过并显示出学生要求添加信息列通过用户注册岀生年月要求格式形如"2000-0i-or测试用例如表6-8所示。表6-8注册用户出牛FI期测试用例用例一用例二用例三用例四测试用例空2016.08.212016/08/212016-08-21测试结果提示不能为空提示格式错误提示格式错误通过登录用户名要求不能为空,测试用例如表6・9所示。表6-9登录用户名测试用例用例一用例二测试用例空yangzhao测试结果提示不能为空通过 表6・10背录密码测试用例用例一用例二测试用例空1234567890oiu测试结果提示不能为空通过5.2.2注册用户个人信息管理功能测试个人信息电话号码可为空,测试用例如表6・11所示。表6-11个人信息电话号码测试用例用例一用例二测试用例空18334701732测试结果通过通过个人信息乘客类型有两种,“学生”和“成人”,测试用例如表6・12所示。表6・12个人信息乘客类型测试用例川例…川例一测试用例7牛成人测试结果通过并显示出学主要求添加信息列通过6.2.3车票查询功能测试日期要求格式形如"2000-01-01",测试用例如表6-13所示。表6-13日期测试用例用例一用例二用例二用例四测试用例空2016.08.212016/08/212016-08-21测试结果提示不能为空提示格式错误提示格式错误通过始发站耍求不能为空,测试用例如表6・14所示。表6-14始发站测试用例用例-用例二测试用例空北京测试结果提示不能为空通过 衣6・15终点站测试用例用例…用例二测试用例空哈尔滨测试结果提示不能为空通过车站要求不能为空,测试用例如表6・16所示。表6・16车站测试用例用例-用例二测试用例空哈尔滨测试结果提示不能为空通过车次要求不能为空,测试用例如表6・17所示。农6-17车次测试用例用例一用例二测试用例空K1测试结果提示不能为空通过5.2.4车票预订及订单生成功能测试订单要求成人不能买学生票,学生不能买软卧、高级软卧、特等座和商务座,同一联系人不能购买通天同次列车车票,前提是联系人杨钊为学生,联系人李玉为乘客,联系人王五为成人且购买了本次列车,且测试用例如表6-18所示。表6・18订单测试川例测试用例联系人席别票种测试结果用例一杨钊二等座学生票通过用例二杨钊软卧学生票未通过,提示学生不能买此席别用例三杨钊高级软卧学生票未通过,提示学生不能买此席别用例四杨钊特等座学生票未通过,捉示学牛不能买此席别川例五杨钊商务座学生票未通过,提示学生不能买此席别用例五王五无座成人未通过,提小•已买当天本次列车用例六杨钊二等座成人票通过用例七李H••等座学生票未通过,提示成人不能买学生票 6.2.5车票改签及退订功能测试车票改签按照多退少补原则调整账户余额,在用户原票价为¥195.0的基础上进行改签测试,测试用例如表6・19所示。表6・19改签测试用例用例一用例二用例三测试用例改签票价¥195.0改签票价¥97.5改签票价¥230.5测试结果不补不扣退¥97.5至账户余额扣除账户余额¥35.5耍求用户可以在列车开车之/而的2小时办理退票手续,并根据距离第一次订票的开车日期的长短扣除相应的手续费,15天以上不扣除任何手续费,15天以内2天以上扣除票价5%的手续费,2天以内一天以上扣除票价10%的手续费,一天以内2小时以上,扣除票价20%的手续费。退票测试用例如表6-20所示。表6-20退票测试川例测试用例首单开车口期退票口期测试结果用例一2016-06-2009:002016-05-1508:00不扌II除任何手续费用例二2016-05-3009:052016-05-1508:00扌II除票价5%,其余返回账户余额用例三2016-05-1608:002016-05-1508:00扣除票价10%,其余返回账户余额用例四2016-05-1513:002016-05-1508:00扣除票价20%,其余返回账户余额用例五2016-05-1508:002016-05-1508:00不予办理退票手续 7总结与展望7.1总结该火车票订购系统开发模式选择了当今较为流行的B/S模式,采用面向对象的分析方法,显示页面基于jsp技术进行开发。系统在目前web应用程序中非常流行的开源集成框架struts+spring+hibernate的基础上,实现项目的表示层、业务逻辑层以及数据访问层三层技术架构,开发语言采用java,后台的数据库管理系统则选用Oraclellg,开发工具采用eclipse,web服务器选用的是轻量级的tomcat0系统实现了用户注册登录、信息修改、联系人添加、车票查询、车次查询、余票查询、车票订购、车票改签及退订等功能。系统开发也运用到AJAX技术和标签库jQueryo满足了用户的基木需求。7.2展望该系统有如下几个方面需要改善:1.数据库设计存在问题,列车信息的存储形式使得车票查询与预定的业务逻辑实现较为复杂。2.管理员对列车信息的添加和删除应该由服务器端实时监控,进行自动添加和删除功能,但因服务器负载达不到要求,所以没有实现。3•订单生成后系统默认直接付款,也是出于没冇服务器实时监控订单支付情况,从而不能实现将没冇支付的订单自动释放的功能。 参考文献[1]丁旭,基于B/S架构的软件项目实训-JSP[M].北京:清华大学出版社,北京交通大学出版社,2011[2]郝玉龙.轻松掌握STruTS2[M].北京:清华大学出版社,北京交通大学出版社,2010[3]于湛麟,李仲秋,任永昌・SSH框架实现MVC架构的电子商务软件平台[J].计算机技术与发展,2012,(10)[4]郝玉龙,尹建平等.JavaEEWeb开发实例精解[M]・北京:清华大学出版社,北京交通大学出版社,2008[5]任奕帆•基于Java技术的的火车票订购系统设计研究[J]・电了技术与软件工程,2013,(07)[6]QuFeng,ZOUMinandLiXiao-Zhen.SurveyonJavaTechnologyFramccork[J].ComputerSystems&Applications,2012,21(8):236-239[7]James,Elliott,HarnessingHibernate[M].O'ReillyMedia,2008[8]Shcnhan,Kerri,HirbcrnatcmadeEasy[M].Pulpjava,2008[9]赵洋,张丽,王恩东等.基于Struts,Hibernate和Spring的J2EE架构研究[J].现代电了技术,2009(02)[10]杨金花,JSP技术小文乱码的原因及解决方法[J]•电子设计工程,2011(01) 致谢我在设计(论文)期间都是在老师全面、具体指导卜•完成进行的。老师渊博的学识、敏锐的思维、民主血严谨的作风使学生受益非浅,并终生难忘。感谢我的学友和朋友对我的关心和帮助。 外文文献IntroductionofJSPTechnologyJavaServerPagesTM(jsp(SUNenterpriseapplicationofchoice))technologyforthecreationofdisplaycontentdynamicallygeneratedWebpageprovidesasimpleandrapidmethod・jsp(SUNenterpriseapplicationofchoice)technologyisdesignedtoenablestructure-basedWebapplicationsmoreeasilyandfaster,andcantheseapplicationswithavarietyofWebservers,applicationservers,browsers,anddevelopmenttoolstoworktogethe匚Hereprovidesajsp(SUNenterpriseapplicationofchoice)technologyoverview,describesthebackgroundofitsdevelopment,aswellastheoverallobjectiveofthistechnology.Atthesametime,asimpleexample,alsodescribesaJavaTMtechnology-basedkeycomponentofthepage.WebapplicationdevelopmentofJavaServerPagestechnologyWaysInthedevelopmentofjsp(SUNenterpriseapplicationofchoice)specificationprocess,SunMicrosystems(SunMicrosystemsInc.)AndmanymajorWebservers,applicationserversanddevelopmenttoolsproviders,aswellasavarietyofexperienceddevelopmentgroupstocooperate.Theresultisfoundapageforapplicationsanddeveloperstobalancetheportabilityandeaseofuseofdevelopmentmethodologies.WillgenerateanddisplaythecontentsoftheseparationUsingjsptechnology,WebpagedeveloperscanuseHTMLorxmllogotodesignandformattingthefinalpage.Jsplogoortheuseofboundfeetwouldhavetogeneratedynamiccontentonthepage.Thelogic-generatedcontenthasbeenpackagedinalogoandJavaBeanscomponentsandtiedupinasmallscript,allthescriptsintheserver-siderun.IfthecorelogicwasencapsulatedinthelogoandBeans,thenotherpeople,suchasmanagementandWebpagedesigners,caneditandusejsppages,withoutaffectingthegenerationofcontent.Theserverside,jspengineexplainedjsplogoandsmallscripttogeneratetherequestedcontent(forexample,byaccessingJavaBeanscomponents,theuseoftechnologyJDBCTMaccessthedatabase,orincludefile),andtheresultstoHTML(orxml)pageoftheformsentbacktothebrowse匚Thishelpstheauthortoprotecttheircode,andensurethatanyHTML-basedWebbrowsercompletelyavailability. EmphasisonreusablecomponentsJsppagereliesonthevastmajorityofreusable,cross-platformcomponents(JavaBeansorEnterpriseJavaBeansTMcomponents)toimplementtherequirementsofapplicationsmorecomplextreatment.Developerstobeabletoshareandexchangecomponentstoperformcommonoperations,ormakethesecomponentsmoreuserorclientgroupstouse.Component-basedapproachtoacceleratetheoveralldevelopmentprocess,andmakeavarietyoforganizationsintheirexistingskillsandtooptimizetheresultsofdevelopmenteffortsinthebalance.UsedtosimplifypagedevelopmentlogoWebpagedevelopersarenotfamiliarwiththescriptinglanguageoftheprogrammer.JavaServerPagetechnologypackagesanumberoffunctions,whichareinusew让hthejsp-relatedxmllogoindynamiccontentgenerationneeds.JsplogostandardscanaccessandinstantiateJavaBeanscomponents,setorretrievecomponentsofproperty,downloadApplet,andimplementationbyothermeansmoredifficulttoencodeandtime-consumingfunction.Throughthedevelopmentofcustomizedlogoslibrary,jsptechnologycanbeextended.Infuture,third-partydevelopersandotherpersonnelforcommonlyusedfeaturestocreateyourownlogolibrary.ThisallowsWebpagedeveloperscanusefamiliartoolsandthesamelogoastheimplementationofspecificfunctionsofcomponentstowork.jsptechnologyeasilyintegratedintoavarietyofapplicationsarchitecture,totakeadvantageofexistingtoolsandtechniques,andexpandedtobeabletosupportenterprise-classdistributedapplications.TheuseofJavatechnologyaspartofthefamily,aswellastheJava2(EnterpriseArchitecture)isanintegralpartof,jsptechnologycansupportthehighlycomplexWeb-basedapplications.Jsppagebecauseofthebuilt-scriptinglanguageisbasedontheJavaprogramminglanguage,andallthejsppagesarecompiledtobecomeJavaServletJsppageonwithallthebenefitsofJavatechnology,includingrobuststoragemanagementandsecurity.AspartofJavaPlatform,jsphasaJavaprogramminglanguage,nwriteonce,runeverywherencharacteristics.Asmoreandmoresupplierswillbeaddedtojspsupporttheirproducts,youcanuseyourownchoiceofserverandtools,changetools,ortheserverdoesnotaffectthecurrentapplication. WhenusedwithJava2Platform,EnterpriseEdition(J2EE)andEnterpriseJavaBeantechnologyintegration,jsppagewillprovideenterprise-classscalabilityandperformance,whichisessentialforthedeploymentofvirtualenterpriseWeb-basedapplicationsisessential.jspinstructionsjsppageusingjspdirectinstructiondeliveredtothejspengine.Thisincludes:jsppagedirectivesrelatedtoinformationtransmissionpage,suchasbufferandthreadinformationorwrongtreatment.Languageinstructionsspecifiedscriptinglanguage,aswellasalltheexpansion.Containsinstructions(intheaboveexampleshaveshown)canbeusedinthepagethatcontainsanexternaldocument.Agoodexampleisthecopyrightorcompanyinformationdocumentsdocuments-inacentralizedlocationtopreservethedocumentandthepagecontainsmorethaninalljsppageshouldbeeasiertoupdate.Ofcourse,beingcontainedinadocumentmayalsobeanotherjspfile.Logolibraryinstructionspointedoutthatthepagecancallaclientlogolibrary.jsplogoWilldealwiththeoverwhelmingmajorityofjspandjsprelatedxmlbasedonthecompletionofthelogo,jsp1.0containssubstantialstandardlogo,whichidentifiesasacoreidentity,including:jsp:useBeanstatementoftheidentityofacomponentinstanceoftheuseofJavaBeans.Ifthecomponentinstancedoesnotexist,JavaBeanscomponentstoinstantiateandregisterthelogo.jsp:setPropertythislogosetupexamplesofcomponentsofaproperty'svalue.jsp:getPropertythislogotoobtainacomponentinstanceofthepropertyvalue,willbetranslatedintoastring,andplaceitimpliedobject"out"Medium.jsp:includejsp:forwardThemeritoftheirlogointheapplicationeasytouseandshare.Grammarbasedonthelogooftherealpowercomesfromthecustomeridentificationlibrarydevelopment,makesatoolsupplierorotherpersonnelcanrequestaspecificassignmenttocreateandlogo.Scriptcomponentsjsppageinthepagethatcontainsasmallscript,calledthesmallscript(scriptlets).Smallscript isacodefragment,intherequestprocessingisexecuted.Smallscriptscanbeastaticpageelement(asthesameastheaboveexample)tocreatedynamicallygeneratedpages.Scriptinthe<%and%>signshavebeendescribed.Signsinthisforallthethingsaredescribedscriptinglanguageengineimplementation,inourcasearethehostoftheJavaVirtualMachinejspspecificationsupportallcommonlyusedscriptcomponent,includingregularexpressionsandstatements.jsppageapplicationmodeljsppagefromtheimplementationofjsengine,enginesinstalledintheWebserverorapplicationusingjspserver.jspenginetoaccepttheclientrequesttothejsppage,andgeneratejsppagestotheclientsresponse.jsppagesareusuallycompiledbecomeaJavaServlet.ThelatterisastandardJavaextensioninwww.java.sun.comsitehasmoredetaileddescription.PagedeveloperscanaccessalloftheJavaapplicationenvironmenttotakeadvantageofJavatechnology,scalabilityandportability.Whenthefirstjsppageiscalled,ifitdoesnotexist,willbecompiledintoaJavaServletcategory,andisstoredintheserver^memory.Thismakesthenextcalltothepagehaveaveryquickresponse.jsppagecanbeincludedinawidevarietyofapplicationarchitectureormodel,jsppagecanbeusedbydifferentprotocols,componentsandformatofthecompositionoftheCommonwealth.Thefollowingsectionsdescribesomeofthepossibleconsequences.AsimpleapplicationInasimpleimplementation,thebrowserdirectlycalljsppage,jsppageitselfgeneratetherequestedcontent(maybecalleddirectlyfromtheJDBCdatabaseaccesstoinformation).jsppagecancalltheJDBCorJavaBlendTMcomponenttogeneratetheresults,andcreateastandardHTML,asaresultsentbacktothebrowser.Themodelisbasicallyusedjsppage(compilersbecomeJavaServlet)insteadoftheconceptofCGI-BIN.Thismethodhasthefollowingadvantages:SimpleandfastprogrammingPageauthorscaneasilyandresourcesofstate,uponrequest,togeneratedynamiccontentThisstructureinmanyapplicationsagoodjob,butshouldnotbeextendedtoalargenumber ofconcurrentWeb-basedcustomeraccessscarcecorporateresources,sinceeachclientmustbesetuporsharearesourcethatcanbeusedtoconnectthecontent.Forexample,ifthejsppagetoaccessthedatabase,maygeneratemuchconnectiontothedatabase,whichwillaffectthedatabaseperformance.TheuseofaflexibleJavaServletApplicationInanotherpossibleconfiguration,Web-basedclientmaybedirectlyontheJavaServletrequests,Servlettogeneratedynamiccontent,theresultstiedtoaresultsobjectandcalljsppage,jsppagetoaccesstheobjectfromthedynamiccontent,andtheresults(suchasHTML)sentbacktothebrowser.Thismethodtocreatemoreapplicationscanbesharedbetweenreusablecomponentsandapplicationscanbeusedaspartofabiggercompleted.However,inthesamedealwithdatabasessuchasEnterpriseResourceConnection,thescalabilityproblemstillexists.JavaBeantechnologyusingenterprise-classscalabilitytreatmentjsppagecanbeusedasEnterpriseJavaBean(EJB)architecture,amiddlelaye匸InthiscaseJsppagesandtheback-endresourcesthroughEJBcomponentsinteract.EJBcomponentsontheback-endmanagementofresourcestovisit,soasalargenumberofconcurrentuserswithscalableperformance.Fore-commerceorotherapplications,EJBmanagementtransactionsandpotentialsafety.Thiswillsimplifythejsppage.ThemodelfortheJava2EnterpriseEdition(J2EE)platformsupport.jsppagewiththexmltechnologyintegrationjsppagecanbeusedtogeneratethexmlandtheHTMLpage.Forasimplexmlgenerated,developerscanincludejsppagexmllogoandpartofthestatictemplate.Dynamicxmlgeneration,theuseofserver-basedobjectsandgeneratetheoutputxmlclientidentifier.jsppagewiththexmltoolsarenotincompatible.AlthoughtheSuninthedesignspecificationwhenjsppagejspmakesevenmanualforcreatorsisalsoveryeasy,jspspecificationalsoprovidesamechanismtofacilitatethecreationofanarbitraryjsppagexmlversion.Inthisway,xmltooltobeabletocreateandoperatejsppage.Byjspconvertlogoandcomponentscompatiblewiththexmlequivalent,youcanuse xml-basedtoolstooperatethejsppage.Forexample,thescriptcanbeincludedinthe<%and%>in,orbasedonthexmllogoandMedium.Infact,afterfollowingafewsimplejsppagewillbeconvertedtoxmlpagesarepossible,thesestepsinclude:AddingarootelementjspComponentsandinstructionswillbeconvertedtoxmlandotherobjectsofcompatibleForpageinothercomponents(usuallynon-jsp)createaCDATAelementThroughthismethodcompatiblewiththexml,createHTMLpagedesignersstillhavearapidlycreatedynamicWebpages-to-useenvironment,meanwhile,xml-basedtoolsandservicescanbeintegratedwiththejsppageandcompatibleserverandjsptoworktogether.jsptechnology^futurejsptechnologyhasbeendesignedasanopen,scalabledynamicWebpagesetupstandards.DeveloperscanusejsppagetocreateaportableWebapplications,indifferentWebandapplicationserversforthedifferentoccasionsarerunning,andwhatevertheoccasionitselfandtheneedforthecreationoftools.Throughcooperationwithleadersoftheindustry,Sunassurancejspnormsareopenandcanbetransplanted.Canuseanyclientandserverplatforms,inanyplacetoprepareanddeploythem.Thefuture,tools,suppliersandothervendorswillbeprovidedforthespecializedfunctionoftheclientlogolibrarytoexpandtheplatformfunctionality.jspspecificationversion1.0isthepathtothedynamicWebpagegeneratedbyanopenindustrystandardmethodofthefirststep.Version1.0throughacorelogosets,implicitobjects,andtostartcreatingdynamicWebpagesconstitutesthebasicfunctionsrequiredofthemethodisbasic.AlreadyhasanumberofWebservers,applicationserveranddevelopmenttoolvendorsareaddingtotheirproductsjspl.Osupport,sothattheindustryalreadyhastheinitial,immediatesupport.Willbecompletedlaterin1999the1.1versionofthexmlthroughgreatersupportforidentificationofcustomers,aswellasintegrationwithJ2EEandtheexpansionofthisversion.Andsuppliersmaychoosetoextendandexpandthespecificationinjspbasic,necessaryfunction,jspenginecansupportavarietyofpowerfulscriptinglanguageandobjectmodel.Intheindustrytoexpandtechnologicalcapabilitiesandtheuseofjspatthesametime,Sunalsopromisedtoguarantee jspplatformandservertechnologytomaintaininter-inherentportability. 中文翻译JSP技术简介(JSP(JavaServerpagestm选择阳光企业应用))用于显示内容动态生成的Web页而捉供了一个简单而快速的方法创作技术。JSP(选择阳光企业应用)技术设计,使基于Web的应用程序更容易和更快的结构,可以应用多种Web服务器、应用服务器、浏览器和开发工具一起工作。这里捉供了一个JSP(选择阳光企业应用)技术概述,介绍了其发展背景,以及该技术的总体目标。同时,一个简单的例子,也介绍了一种基JavaTM技术的页而的关键部件。JavaServerPages技术方法的Web应用程序开发。在JSP开发屮的(选择阳光企业应用)规范的过程屮,Sun微系统公司(SunMicrosystemsInc.)和许多主要的Web服务器、应用服务器和开发丁-具供应商,以及各种各样富有经验的开发团体合作。结果是一个页而的应用程序和开发,以平衡的可移植性和易丁使用的开发方法。将生成和显示分离的内容。使用JSP技术,Web页而开发人员可以使用HTML或XML标识和格式化最终页而设计。JSP标识或者小脚的使用会生成页而上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件和捆绑在小脚本屮,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和豆类,那么其他人,如Web管理人员和页而设计者,能够编辑和使用JSP页而,而不影响内容的生成。服务器端,JSP引擎生成所请求的内容解释JSP标识和小脚本(例如,通过访问JavaBeans组件,使用jdbctm技术访问数据库,或者包含文件),结果以HTML(或XML)页而的形式发送凹浏览器。这有助丁作者保护自己的代码,并确保基FWeb浏览器的完全可用性任何HTMLo强调可重用的组件JSP页而依赖于可重用的绝大多数,跨平台的组件(JavaBeans和EnterpriseJavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发者能够分享和交换组件来执行共同的操作,或者使这些组件使用更多的用户或客户群。组件化的方法,以加快整体发展过程,并使各种组织在其现冇的技能和优化结果的发展努力的平衡。用于简化页面开发标志网页开发人员不熟悉程序员的脚本语言。JavaServerPage技术封装了许多功能,这 是在用动态内容生成的JSP相关的XML标识需求。标准的JSP标识能够访问和实例化JavaBeans组件,设置或检索组件的属性,下载程序,并通过其他方式难以编码和耗时的函数的实现。通过自定义徽标的开发库,JSP技术可以扩展。在未來,第三方开发人员和其他人员通常使用的功能,创建自己的标志库。这让网页开发者可以使用熟悉的工具和相同的标识作为实现组件的具体功能來工作。JSP技术很容易整合到多种应用体系结构,利用现冇的工具和技术,并扩展到能够支持企业级的分布式应用。使用java技术作为家庭的一部分,以及java2(企业架构)的一个组成部分,JSP技术可以支持应用程序的高度复杂的网络。JSP页面因为内置脚本语言是基于java编程语言,和所有的JSP页面被编译成javaservlet,JSP页面和java技术的所冇好处,包括健壮的存储管理和安全性。作为java平台的一部分,JSP有java编程语言“一次编写,到处运行叩勺特点。随着越來越多的供应商将被添加到JSP支持他们的产品,您口J以使用自己选择的服务器和工具,修改工具,或服务器并不影响当前的应用。当使用java2平台企业版(J2EE)和EnterpriseJavaBean技术的集成,JSP页面将提供企业级的可扩展性和性能,这对于虚拟企业的基于Web的应用程序的部署是必不可少的。JSP指令JSP页面使用JSP指令传递到JSP引擎。这包括:JSP页面指令信息传输页面相关,例如缓冲区和线程信息或错误的处理。语言指令指定的脚本语言,以及所有的扩展。包含说明(在上面的例子中所示)可用于包含外部文档的页。一个很好的例子是在一个集中的位置來保存文档和网页包含超过所有JSP页面应该更容易更新版权或公司信息文件的文件。当然,被包含在一个文件也可能是另一个JSP文件。标识库的说明指岀,该页面可调用客户端标识库。JSP标志将处理JSP基于LOGO完成绝大多数JSP相关的XMLoJSP1中包含大量的标准标识,标识为核心的身份,包括:jsp:我对使用JavaBeans组件实例的身份声明。如果组件的实例不存在,JavaBeans组件实例化和登记标志。 jsp:设置这个标志的设置属性值的组件实例。jsp:getProperty这个标志获得物业价值的一个组件的实例,将转换成一个字符串,并把它隐含的对象从中。jsp:包括jsp:向前其标志的优点在应用中易于使用和共享。基于真正权力的标识,來自客户识别库的开发,使工具供应商或其他人员可以要求特定的任务,创建和标识。脚本组件在页面的JSP页面包含一个小的脚本,称小脚本(脚本)。小脚本是一个代码片段,在请求处理中被执行。小脚本可以是静态页面元索(如上面的例子一样)來创建动态生成的页面。在<<%和%>>中的脚本已经被描述。所有的东西在这个标志的描述脚本语言引擎的实现,在我们的例子中是java虚拟机的主机JSP规范支持所有常用的脚本组件,包括正则表达式和语句。JSP页面的应用模型JSP页面的JS引擎的实现,安装在Web服务器或使用JSP服务器应用程序引擎。JSP引擎接受客户端请求JSP页面,并生成JSP页面给客户端的响应。JSP页血编译成javaservlet通常。后者是在www.java.sun.com网站标准的java扩展有更详细的描述。页开发人员可以访问所有的java应用环境,利用java技术,可扩展性和可移植性。当第一个JSP页面被调用,如果它不存在,将编译成javaServlet类,并J_L存储在服务器的内存。这使得页面的下一个呼叫有非常快速的响应。JSP页面可以包含在各种各样的应用架构或模型。JSP页面可以通过使用不同的协议、组件和英联邦的组成格式。下面的章节描述了一些口J能的后果。一个简单的应用程序在一个简单的实现,浏览器直接调用JSP页面,JSP页面本身生成所请求的内容(可能是从数据库获取信息直接调用)。JSP页面口J以调用JDBC或blendtmjava组件产生的结果,并创建一个标准的HTML,结果发送冋浏览器。该模型基本上是用JSP页面(编译成javaservlet)的概念,而不是cgi-bino这种方法有以下优点: 简单快速编程页面作者可以很容易地和资源的状态,根据请求,生成动态内容这种结构在许多应用中都很好的工作,但不应扩展到大量的并发网络为基础的客户访问稀缺的企业资源,因为每个客户必须建立或共享一个资源,可用于连接的内容。例如,如果JSP页面访问数据库,会产生大量的数据库的连接,这将影响数据库的性能。一个灵活的javaservlet的应用另一种口J能的配置中,基于Web的客户端口J以直接在javaservlet请求,Servlet生成动态内容,结果捆绑到一个结果对象并调用JSP页面。JSP页面的动态内容的访问对象,并将结果(如HTML)发送回浏览器。此方法可以在可重用组件和应用程序之间共享更多的应用程序,可作为更大己完成的部分的一部分使用。然而,在同一个处理数据库,如企业资源连接,可扩展性问题仍然存在。JavaBean技术使用企业级的可扩展性治疗JSP页面也可以作为企业JavaBeans(EJB)架构,中间层。在这种情况下,JSP页面和后台资源通过EJB组件之间的交互。EJB组件对资源的后台管理访问,从而人量并发用户提供可扩展的性能。电子商务或其他应用程序、EJB管理交易和潜在的安全。这将简化JSP页面。对于java2企业版(J2EE)平台支持模型。JSP页面与XML技术的集成JSP页面可以用于生成XML和HTML页面。一个简单的XML生成,开发者口J以包括JSP页面的XML标识和模板的静态部分。动态生成的生成,使用基于服务器的对象,并生成输出的XMLoJSP页面的XML工具都不兼容。虽然太阳在设计规范时,JSP页面JSP甚至手工创作者也很容易,JSP规范还提供了一•种机制來促进任意JSP页面的XML版本的创作。在这种方式中,XML工具能够创建和操作JSP页面。通过JSP转换标识和等效XML兼容的组件,你可以使用基于XML的工具操作的JSP页面。例如,脚本口J以包括在<%和%>,或基于XML的标志:脚本〉和vvJSPJSPscriptlet>中:/。事实上,通过以下几个简单的JSP页面将被转换为XML页面是町能的,这些步骤包括:添加一个根元索JSP 组件和指令将被转换为兼容的其他对象网页的其它成分(通常非JSP)创建一个CDATA元索通过这种方法与XML兼容,创建HTML网页设计师还有快速创建动态Web页的使用坏境,同时,基于XML的工具和服务可以与JSP页面和兼容的服务器和JSP整合到一•起。JSP技术的未來JSP技术被设计为一个开放的,可扩展的建立动态Web页面的标准。开发人员可以使用JSP页面创建一个便携式的Web应用,在不同的Web服务器和应用服务器在不同的场合都在运行,和什么场合本身和创造的工具的需要。通过与业界领袖合作,太阳保证JSP规范是开放的和可移植的。叮以使用任何客户端和服务器平台,在任何地方准备和部署它们。未來,工具,供应商和其他供应商将提供专门的功能,客户端标志库,以扩大平台的功能。JSP规范1版是由第一步开放的行业标准方法生成动态网页的路径。1版通过一个核心标识集,隐式对象,并开始创建动态网页,构成该方法所需的基本功能。已经冇大量的Web服务器、应用服务器和开发工具供应商正在增加他们的产品jspl.O支持,使行业己经起步,直接支持。将在1999完成了1.1版本的XML通过识别客户更大的支持后,以及与J2EE这个版本的扩展集成。和供应商可能会选择延长和扩人在JSP的基本规范,必要的功能。JSP引擎可以支持多种功能强大的脚本语言和对象模型。在产业发展的技术能力,同时使用JSP,Sun还承诺保证JSP平台和服务器技术间固冇的可移植。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭