论文部分内容阅读
摘要:火车网上订票系统是通过网络查询信息,进行火车票的预订、购买、支付的电子商务系统。订票在购票交易过程中扮演着十分重要的角色。系统深入探讨了J2EE应用系统开发过程及其相关技术,提出了订票系统解决方案,在此基础上重点解决了系统体系结构、订票篮设计及系统安全三个关键问题。
关键词:电子商务;J2EE;B/S模式;订票篮
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c
1 引言
近年来,随着Internet技术的快速发展,电子商务的应用越来越广泛,它运用电子通信作为手段进行经济活动,人们可以对带有经济价值的产品和服务进行宣传、购买和结算。电子商务是一种新兴的商务方式,它能提供准确、快速、高效的商务运作,是当今商务运作发展的主流方向。
随着国民经济快速发展,人们出行、交通越来越频繁,对服务的快捷、便利性要求也越来越高。从而对客运行业的建设与管理提出了更高的要求。为适应和推动客运行业的发展,各种交通公司和部门开始广泛采用计算机管理系统,促进了票务事业的发展。经过几年的建设和完善,取得了许多宝贵的成功经验。采用计算机售票一方面大大减轻了订票、售票、检票、调度、票款管理等部门工作人员的劳动强度,提高了各部门的工作效率。
2 J2EE相关技术
J2EE是Sun公司推出的一个基于Java组件技术的企业应用系统开发规范,它为不同厂商创建平台产品提供了标准,使不同J2EE平台产品之间的交互成为可能。J2EE规范[1]定义了一个基于组件技术的多层企业信息系统的标准平台,旨在简化和规范企业应用系统的开发和部署。J2EE不仅能够方便存取数据库的JDBC API, CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还能提供了对EJB(Enterprise JavaBean)、Java Servlets API, JSP(Java Server Page) [2,3]以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。
由J2EE技术组成的三层或多层的架构体系[4],已经成为开发信息系统首选。
典型的J2EE系统至少划分三个层次[5]:表现层,业务逻辑组件层,持久层。
表现层(Presentation Layer)是实现显示功能的。它是用户界面或者远程调用门面。主要由页面技术JSP, SERVLET和MVC框架技术来完成。
业务逻辑层是成功架构的关键[6],这一层的主要功能是提供业务逻辑给表现层使用,它包括许多接口。一个好的业务层具备一下特点:功能完备,使用简单,有很好的OO的实施,面向对象,独立于表现层,易测试,易管理,对事务管理进行处理等。业务层主要是EJB, POJO等技术来实现的[7]。
持久层(Persistence Layer)是负责对象持久化也就是数据库操作的层次。其三层结构和各层之间的关系,如图1。
图2 系统总体架构
4 系统设计
4.1 订票系统设计
订票模块是订票系统的主要模块之一,包含票券订购、查询、票券信息展示、订票篮等四个子模块,票券订购模块设计了一套完善的订票流程,票券信息的展示方便了用户查询自己的定单。该系统中,首先必须通过会员注册成为会员或是会员登陆才可以完成订票。订票资料提交后,系统会生成一个唯一的取票号,则客户订票成功。客户只要凭身份证或其他有效证件到自己选择的的取票点在有效时间内取票即可。
系统应该要求其概念模式、显示方式等的一致性,在类似的情况下具有一致的操作序列,如在提示和帮助中产生相同的术语等。人机界面设计的一致性要求对构成易学易用是极为重要的;交互系统的反馈是指用户从计算机一方得到信息,表示计算机对用户的动作所做的反应。如果系统没有反馈,用户就无法判断他的操作是否为计算机所接受,是否正确,以及操作的效果是什么.反馈信息的呈现方式可以是多种多样的,如文本、图形和声音等;在界面的空间使用上,应当形成一种简洁明了的布局。界面设计最重要的就是遵循美学上的原则—简洁与明了;综合测试与评估,这个阶段的关键任务是通过各类型的测试与评估,使系统达到预定的要求。它可以采取多种方法,如试验法、用户反馈、专家分析、软件测试等,对软件界面的诸多因素如功能性、可靠性、效率、美观性等进行评估,以获取用户对界面的满意度,便于尽早发现错误或者不满意的地方,以改进和完善系统设计;
基于J2EE技术的火车订票系统具有结构复杂、各订票流程界面存在着很大的相似性、界面之间需要传递的信息量大等特点。在系统界面设计时,作者利用上述设计原则和步骤,并结合本系统的具体特点进行设计。
4.2 数据库的设计
票券信息数据结构复杂,涉及班次的日期/时间、出发地/目的地、票券种类等信息,本系统根据关系型数据库的设计思想,对票券信息资料进行规划设计。票券信息数据库中表的设计。
user信息表描述的是系统最高权限管理员的信息,它存放的是系统管理员的用户名(username)、密码(password)、姓名(name)、性别(sex)、生日(birthday)、电话(phone)、地址(address)、电子邮箱(email)、用户类型(userType)备注(memo)和流水号(flowID)等。其中前四个字段是必要字段,后面的字段可以为空。系统的三种用户(普通用户、票点管理员、系统管理员)都存放在这一表中。其中的userType用以区分这三种用户,"0"为系统管理员,"1"为票点管理员,"2"为普通用户。系统管理员只有一个,由建表时建立,票点管理员由系统管理员添加,而普通用户则通过注册获得合法权限, Range信息表描述的是火车的区间,即火车的基本信息。它包括火车的车次(traimID)、出发站(startStation)、到达站(desStation)、出发时间(StartTime)、到达时间(arriveTime)、备注(memo)和流水号(flowID)。这个信息表可以供一般用户查询,而系统管理员则可以添加、修改和删除任意的火车区间。ticketType信息表描述的是火车票的种类。它包括火车的车次(range)、车票种类名称ticketTypeName)、该类车票的张数(ticketNumber)、该类车票的价格(ticketPrice)、备注(memo)和流水号(flowID)。这个信息表也可以供一般用户查询,而系统管理员则可以添加、修改和删除任意的票种区间。Diction信息表描述的是数据库表中所替代字段的名称。它包括要替换的字段名称(dictType)、替换后的名称(dictKey)、要替换的名称(dicValue)、备注(memo)和流水号(flowID)。比如在_user信息表中的sex字段,男用字母m替换,女用字母f替换。该表是为了存储的方便和空间的节约。Office信息表描述的是票点的基本信息。它包括票点的名称(officeName)、票点的地址(officeAddress)、票点的电话(officePhone)、票点的传真(officeFax)、票点管理员的ID号(officeManagerID)、备注(memo)和流水号(flowID)。票点是一般用户订票后取票的地方,所以以上的前五个字段是必须的。票点可以由系统管理员添加。Ticket信息表描述的是火车票的信息。它包括用户订票时生成的取票号(ticketUniformID)、票点ID(officeID)、票种类ID(ticketTypeID)、出发时间(startTime)、预定时间(bookTime)、一般用户名称(userName)、备注(memo)和流水号(flowID)。这里的userName是一般用户的名称,是通过注册的合法本系统会员,本系统规定只有会员才拥有订票功能。
本系统的表,都是通过流水号(flowID)联系起来的,比如火车票信息中的票点ID(officeID)、票种类ID(ticketTypeID)都是Office和ticketType中的流水号(flowID)。从而建立了统一的联系,从而形成了既快捷又简单的联系方式。
4.3 订票篮的设计
订票系统最终实现的是购买一张适合旅客的票据,因此订票篮的设计能够反映出整个购票流程。本系统设计的订票篮采用了Session技术,系统把一个订单中的每一张票作为一条纪录插入数据集,订票篮中实际存放的是一个总的定单数据,最后插入数据库时系统先从Session中提取纪录,然后再逐条放入数据库。票券信息的结构复杂性使得系统在构建构票流程是采取的是逐步选择的方式。这种购票方式致使旅客每进行一步购票操作就要保存一次数据,这就需要设计一个数据集,将票券信息同一存放在一个数据集中的临时关系表中,然后一层层包含的方式实现旅客每进行一步操作都存入数据集中的临时表中,并作为Session的存储对象。
票券是存放于订票篮的基本信息,设计订票篮首先要设计票券的内容,火车票票券应包含的信息主要有:旅客的姓名;服务项目;取票点;班次;日期/时间;票种。
订票篮是网上订票系统的关键部分,系统最终实现的是购买到一张或几张符合旅客需求的票券,由于票券的信息结构复杂,将涉及到数据库中许多相关联的关系表,如果订票篮采用一般的数组结构,显然无法满足要求:票券信息的结构复杂性使得系统在构建构票流程是采取的是逐步选择的方式。这种购票方式致使旅客每进行一步购票操作就要保存一次数据,这就需要设计一个数据集,将票券信息同一存放在一个数据集中的临时关系表中,然后一层层包含的方式实现旅客每进行一步操作都存入数据集中的临时表中,并作为Session的存储对象。
用户登陆系统页面订票,首先将请求一个资源,这个资源被映射到struts.guest.TicketAction中,而这中映射的实现是在struts-config.xml里面配置的。在TicketAction里面首先进行的是用户输入的合法性验证,比如输入的订票张数是否合法。验证通过以后,将调用TicketService类里面的方法insert(),执行具体的插入动作。而这个insert()方法首先调用DaoConfig文件,通过DaoConfig文件获得获得DaoManager实例。而DaoManager实例负责处理Dao接口和SqlMaps的实现关系,这个实现关系在cn.edu.him.persistence下面的dao.xml文件中定义。TicketService又利用这个实例化的DaoManager实例获得一个由TicketSqlMapDao实例化的TicketDao接口。这个TicketDao接口中就包含有插入这个方法,但实现又是在TicketSqlMapDao中,在TicketSqlMapDao中实现时,调用那些Mapped Statement。 Statement在cn.ede.him.persistence.sqlmapdao.sql包中的xml文件中定义,每一个Statement都有一个id,而每一个id又对应一条SQL语句,执行这条SQL语句就执行了插入操作。从而实现了用户的订票。
用户订购票券时,逐层加入数据集,最终在订票篮中形成一个完整的票券信息数据结构表,确定购买票券之后查询订票篮中的票券信息以插入数据库,最后执行删除订票篮在Session的记录,释放资源。
用户通过注册或者会员登陆后,才可以实现订票。会员注册信息填写。会员登陆后,就可以根据自己需要的车次或者出发地/目的地查询具体信息。然后查看车票类型,找到自己所需要的车票类型后选择订票,选择订票后,就可以选择车票的详细信息,比如取票的地点、订票的张数、车次发车的日期。然后确定后就生成取票号及定单详细资料。
5 结束语
基于J2EE技术的火车票订票系统结构复杂,网上订票系统是整个售票系统的一个子系统,是票务系统的一个销售渠道。网上订票系统涉及技术面较广、用户量大,对系统的响应速度、稳定性、安全性、实时性等方面要求很高。系统系统实现了对火车网上售票系统的设计与开发,能够在诸多复杂因素的影响下,保证售票的正常运行。
参考文献:
[1]Subrahman yam.J2EE编程指南[M].北京:电子工业出版社,2004.
[2]杨学瑜,王志军,刘同利.JSP入门与提高[M].北京:清华大学出版社,2001.
[3]孙卫琴,李洪成.TOMCAT与Java Web开发技术详解[M].北京:电子工业出版社,2004.
[4](美)谢小乐((Henry Xie),著,朱福喜,余振坤,译.J2EE经典实例详解[M].北京:北京人民邮电出版社,2003.9.
[5](美)Palavi JainShadab Siddiqui著,王雷潘英译,J2EE专业项目实例开发[M].中国水利水电工业出版社,2003.2.
[6]Rod Johnson.Introduction to open-source Spring framework for J2EE.ppt,2005.
收稿日期:2008-01-20
作者简介:段昌敏,硕士,讲师,研究方向:系统设计、现代密码学、网络安全等。
关键词:电子商务;J2EE;B/S模式;订票篮
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c
1 引言
近年来,随着Internet技术的快速发展,电子商务的应用越来越广泛,它运用电子通信作为手段进行经济活动,人们可以对带有经济价值的产品和服务进行宣传、购买和结算。电子商务是一种新兴的商务方式,它能提供准确、快速、高效的商务运作,是当今商务运作发展的主流方向。
随着国民经济快速发展,人们出行、交通越来越频繁,对服务的快捷、便利性要求也越来越高。从而对客运行业的建设与管理提出了更高的要求。为适应和推动客运行业的发展,各种交通公司和部门开始广泛采用计算机管理系统,促进了票务事业的发展。经过几年的建设和完善,取得了许多宝贵的成功经验。采用计算机售票一方面大大减轻了订票、售票、检票、调度、票款管理等部门工作人员的劳动强度,提高了各部门的工作效率。
2 J2EE相关技术
J2EE是Sun公司推出的一个基于Java组件技术的企业应用系统开发规范,它为不同厂商创建平台产品提供了标准,使不同J2EE平台产品之间的交互成为可能。J2EE规范[1]定义了一个基于组件技术的多层企业信息系统的标准平台,旨在简化和规范企业应用系统的开发和部署。J2EE不仅能够方便存取数据库的JDBC API, CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还能提供了对EJB(Enterprise JavaBean)、Java Servlets API, JSP(Java Server Page) [2,3]以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。
由J2EE技术组成的三层或多层的架构体系[4],已经成为开发信息系统首选。
典型的J2EE系统至少划分三个层次[5]:表现层,业务逻辑组件层,持久层。
表现层(Presentation Layer)是实现显示功能的。它是用户界面或者远程调用门面。主要由页面技术JSP, SERVLET和MVC框架技术来完成。
业务逻辑层是成功架构的关键[6],这一层的主要功能是提供业务逻辑给表现层使用,它包括许多接口。一个好的业务层具备一下特点:功能完备,使用简单,有很好的OO的实施,面向对象,独立于表现层,易测试,易管理,对事务管理进行处理等。业务层主要是EJB, POJO等技术来实现的[7]。
持久层(Persistence Layer)是负责对象持久化也就是数据库操作的层次。其三层结构和各层之间的关系,如图1。

图2 系统总体架构
4 系统设计
4.1 订票系统设计
订票模块是订票系统的主要模块之一,包含票券订购、查询、票券信息展示、订票篮等四个子模块,票券订购模块设计了一套完善的订票流程,票券信息的展示方便了用户查询自己的定单。该系统中,首先必须通过会员注册成为会员或是会员登陆才可以完成订票。订票资料提交后,系统会生成一个唯一的取票号,则客户订票成功。客户只要凭身份证或其他有效证件到自己选择的的取票点在有效时间内取票即可。
系统应该要求其概念模式、显示方式等的一致性,在类似的情况下具有一致的操作序列,如在提示和帮助中产生相同的术语等。人机界面设计的一致性要求对构成易学易用是极为重要的;交互系统的反馈是指用户从计算机一方得到信息,表示计算机对用户的动作所做的反应。如果系统没有反馈,用户就无法判断他的操作是否为计算机所接受,是否正确,以及操作的效果是什么.反馈信息的呈现方式可以是多种多样的,如文本、图形和声音等;在界面的空间使用上,应当形成一种简洁明了的布局。界面设计最重要的就是遵循美学上的原则—简洁与明了;综合测试与评估,这个阶段的关键任务是通过各类型的测试与评估,使系统达到预定的要求。它可以采取多种方法,如试验法、用户反馈、专家分析、软件测试等,对软件界面的诸多因素如功能性、可靠性、效率、美观性等进行评估,以获取用户对界面的满意度,便于尽早发现错误或者不满意的地方,以改进和完善系统设计;
基于J2EE技术的火车订票系统具有结构复杂、各订票流程界面存在着很大的相似性、界面之间需要传递的信息量大等特点。在系统界面设计时,作者利用上述设计原则和步骤,并结合本系统的具体特点进行设计。
4.2 数据库的设计
票券信息数据结构复杂,涉及班次的日期/时间、出发地/目的地、票券种类等信息,本系统根据关系型数据库的设计思想,对票券信息资料进行规划设计。票券信息数据库中表的设计。
user信息表描述的是系统最高权限管理员的信息,它存放的是系统管理员的用户名(username)、密码(password)、姓名(name)、性别(sex)、生日(birthday)、电话(phone)、地址(address)、电子邮箱(email)、用户类型(userType)备注(memo)和流水号(flowID)等。其中前四个字段是必要字段,后面的字段可以为空。系统的三种用户(普通用户、票点管理员、系统管理员)都存放在这一表中。其中的userType用以区分这三种用户,"0"为系统管理员,"1"为票点管理员,"2"为普通用户。系统管理员只有一个,由建表时建立,票点管理员由系统管理员添加,而普通用户则通过注册获得合法权限, Range信息表描述的是火车的区间,即火车的基本信息。它包括火车的车次(traimID)、出发站(startStation)、到达站(desStation)、出发时间(StartTime)、到达时间(arriveTime)、备注(memo)和流水号(flowID)。这个信息表可以供一般用户查询,而系统管理员则可以添加、修改和删除任意的火车区间。ticketType信息表描述的是火车票的种类。它包括火车的车次(range)、车票种类名称ticketTypeName)、该类车票的张数(ticketNumber)、该类车票的价格(ticketPrice)、备注(memo)和流水号(flowID)。这个信息表也可以供一般用户查询,而系统管理员则可以添加、修改和删除任意的票种区间。Diction信息表描述的是数据库表中所替代字段的名称。它包括要替换的字段名称(dictType)、替换后的名称(dictKey)、要替换的名称(dicValue)、备注(memo)和流水号(flowID)。比如在_user信息表中的sex字段,男用字母m替换,女用字母f替换。该表是为了存储的方便和空间的节约。Office信息表描述的是票点的基本信息。它包括票点的名称(officeName)、票点的地址(officeAddress)、票点的电话(officePhone)、票点的传真(officeFax)、票点管理员的ID号(officeManagerID)、备注(memo)和流水号(flowID)。票点是一般用户订票后取票的地方,所以以上的前五个字段是必须的。票点可以由系统管理员添加。Ticket信息表描述的是火车票的信息。它包括用户订票时生成的取票号(ticketUniformID)、票点ID(officeID)、票种类ID(ticketTypeID)、出发时间(startTime)、预定时间(bookTime)、一般用户名称(userName)、备注(memo)和流水号(flowID)。这里的userName是一般用户的名称,是通过注册的合法本系统会员,本系统规定只有会员才拥有订票功能。
本系统的表,都是通过流水号(flowID)联系起来的,比如火车票信息中的票点ID(officeID)、票种类ID(ticketTypeID)都是Office和ticketType中的流水号(flowID)。从而建立了统一的联系,从而形成了既快捷又简单的联系方式。
4.3 订票篮的设计
订票系统最终实现的是购买一张适合旅客的票据,因此订票篮的设计能够反映出整个购票流程。本系统设计的订票篮采用了Session技术,系统把一个订单中的每一张票作为一条纪录插入数据集,订票篮中实际存放的是一个总的定单数据,最后插入数据库时系统先从Session中提取纪录,然后再逐条放入数据库。票券信息的结构复杂性使得系统在构建构票流程是采取的是逐步选择的方式。这种购票方式致使旅客每进行一步购票操作就要保存一次数据,这就需要设计一个数据集,将票券信息同一存放在一个数据集中的临时关系表中,然后一层层包含的方式实现旅客每进行一步操作都存入数据集中的临时表中,并作为Session的存储对象。
票券是存放于订票篮的基本信息,设计订票篮首先要设计票券的内容,火车票票券应包含的信息主要有:旅客的姓名;服务项目;取票点;班次;日期/时间;票种。
订票篮是网上订票系统的关键部分,系统最终实现的是购买到一张或几张符合旅客需求的票券,由于票券的信息结构复杂,将涉及到数据库中许多相关联的关系表,如果订票篮采用一般的数组结构,显然无法满足要求:票券信息的结构复杂性使得系统在构建构票流程是采取的是逐步选择的方式。这种购票方式致使旅客每进行一步购票操作就要保存一次数据,这就需要设计一个数据集,将票券信息同一存放在一个数据集中的临时关系表中,然后一层层包含的方式实现旅客每进行一步操作都存入数据集中的临时表中,并作为Session的存储对象。
用户登陆系统页面订票,首先将请求一个资源,这个资源被映射到struts.guest.TicketAction中,而这中映射的实现是在struts-config.xml里面配置的。在TicketAction里面首先进行的是用户输入的合法性验证,比如输入的订票张数是否合法。验证通过以后,将调用TicketService类里面的方法insert(),执行具体的插入动作。而这个insert()方法首先调用DaoConfig文件,通过DaoConfig文件获得获得DaoManager实例。而DaoManager实例负责处理Dao接口和SqlMaps的实现关系,这个实现关系在cn.edu.him.persistence下面的dao.xml文件中定义。TicketService又利用这个实例化的DaoManager实例获得一个由TicketSqlMapDao实例化的TicketDao接口。这个TicketDao接口中就包含有插入这个方法,但实现又是在TicketSqlMapDao中,在TicketSqlMapDao中实现时,调用那些Mapped Statement。 Statement在cn.ede.him.persistence.sqlmapdao.sql包中的xml文件中定义,每一个Statement都有一个id,而每一个id又对应一条SQL语句,执行这条SQL语句就执行了插入操作。从而实现了用户的订票。
用户订购票券时,逐层加入数据集,最终在订票篮中形成一个完整的票券信息数据结构表,确定购买票券之后查询订票篮中的票券信息以插入数据库,最后执行删除订票篮在Session的记录,释放资源。
用户通过注册或者会员登陆后,才可以实现订票。会员注册信息填写。会员登陆后,就可以根据自己需要的车次或者出发地/目的地查询具体信息。然后查看车票类型,找到自己所需要的车票类型后选择订票,选择订票后,就可以选择车票的详细信息,比如取票的地点、订票的张数、车次发车的日期。然后确定后就生成取票号及定单详细资料。
5 结束语
基于J2EE技术的火车票订票系统结构复杂,网上订票系统是整个售票系统的一个子系统,是票务系统的一个销售渠道。网上订票系统涉及技术面较广、用户量大,对系统的响应速度、稳定性、安全性、实时性等方面要求很高。系统系统实现了对火车网上售票系统的设计与开发,能够在诸多复杂因素的影响下,保证售票的正常运行。
参考文献:
[1]Subrahman yam.J2EE编程指南[M].北京:电子工业出版社,2004.
[2]杨学瑜,王志军,刘同利.JSP入门与提高[M].北京:清华大学出版社,2001.
[3]孙卫琴,李洪成.TOMCAT与Java Web开发技术详解[M].北京:电子工业出版社,2004.
[4](美)谢小乐((Henry Xie),著,朱福喜,余振坤,译.J2EE经典实例详解[M].北京:北京人民邮电出版社,2003.9.
[5](美)Palavi JainShadab Siddiqui著,王雷潘英译,J2EE专业项目实例开发[M].中国水利水电工业出版社,2003.2.
[6]Rod Johnson.Introduction to open-source Spring framework for J2EE.ppt,2005.
收稿日期:2008-01-20
作者简介:段昌敏,硕士,讲师,研究方向:系统设计、现代密码学、网络安全等。