基于J2EE的虚拟股票交易系统.doc

上传人:精*** 文档编号:830616 上传时间:2023-09-06 格式:DOC 页数:41 大小:1.49MB
下载 相关 举报
基于J2EE的虚拟股票交易系统.doc_第1页
第1页 / 共41页
基于J2EE的虚拟股票交易系统.doc_第2页
第2页 / 共41页
基于J2EE的虚拟股票交易系统.doc_第3页
第3页 / 共41页
基于J2EE的虚拟股票交易系统.doc_第4页
第4页 / 共41页
基于J2EE的虚拟股票交易系统.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、 摘要本文首先介绍了J2EE平台的体系架构,及基于该平台而诞生,并被广泛应用的MVC(modelviewcontroller)开发模型。其次,简要描述了系统开发过程中使用到的关键技术struts的原理及配置的核心代码。在需求分析阶段,抽象出系统的功能结构图,并建立了数据库表结构及关系模型。基于以上技术背景及系统需求,形成了开发规范。其中包括文档、变量和数据表的命名规范,代码结构规范,及文件结构规范。同时提出了系统开发所需的软、硬件环境需求。然后,依据需求文档,逐一实现各个功能模块,并附带相应的核心代码,加以阐述详细设计过程和实现细节。最后,编写简要测试用例,完善系统,以期达到预结果,完成系统的

2、设计与实现。关键词:J2EE、MVC、股票交易AbstractThis paper first introduced the J2EE platform architecture and MVC (model-view-controller) development model, based on the J2EE platform and was widely used. Second, a brief description of the system to use the key technologies in the process of developing , including

3、struts and the core code of configuration. In the analysis of requirement stage, the functional structure of the system was abstracted, with the establishing database structure and model. Based on the above technical background and system requirements, the development of a standardized was formed. I

4、t includes the documents, data sheets and variable naming standards, code of norms, standards and file structure. At the same time, the software and hardware environment needing in the system was constructed. Based on demand documents , I achieved the various functional modules one by one correspond

5、ing with the core code, to describe the detail design process and the achievement of the details clearly. Finally, I provided a brief test case to find bugs in the system, improve and complete the design and implementation.Key words:J2EE、MVC、stock trade目录第1章 绪论41.1 课题的意义41.2 目前研究的现状51.2.1虚拟市场的研究51.2

6、.2存在问题和不足5第2章 系统规划与需求分析62.1 系统描述62.1.1 用户管理模块62.1.2 股票交易模块62.2 功能描述62.2.1 注册功能62.2.2 登录72.2.3 股票查询72.2.4 股票买卖72.2.5 历史查询72.2.6 实时股价7第3章 系统的总体设计73.1 J2EE三层架构73.1.1 用户界面层83.1.2 业务逻辑层83.1.3 数据服务层83.2 架构设计93.2.1 MVC开发93.2.2 struts技术应用113.2.3 Data Access Object143.2.4 其他层的设计153.3 业务对象设计163.4 数据库设计173.4.1

7、 系统数据分析183.4.2 数据库的字段结构183.5 开发环境的选取203.5.1 Java开发工具203.5.2 页面设计工具213.5.3 Web服务器213.5.4 系统数据库21第4章 系统的实现214.1 通用实现流程224.1.1 视图层224.1.2 控制层实现234.1.3 业务逻辑层与持久化层234.2 功能详细实现234.2.1 欢迎页面244.2.2 帐户信息展现:254.2.3 股票买卖264.2.4 股价实时更新274.2.5 用户好友管理界面294.2.6 查询交易历史记录30第5章 总结31参考文献33附 录33功能实现的核心代码33系统运行所需的基本环境40

8、致 谢41第1章 绪论在jsp、servlet技术的推动下,java web开发进入一个新的时代,但是jsp和servlet在代码重用性上表现并突出,而且造成了java代码与前台的HTML代码的强烈耦合性,使得系统维护起来很困难,由此出现了框架技术,其中以struts框架为主要代表,jakarta-struts框架是Apache软件组织提供的一项开放源代码项目,它为java web 提供了模型-视图-控制(Model-View-Controller,MVC)框架,尤其适合大型项目的开发,目前Struts版本为1.2。本文研究了基于J2EE平台B/S架构的股票交易系统的设计与实现。不仅模拟了股票

9、交易的流程,同时也模拟了运行环境。1.1 课题的意义我国的股票市场,从沪、深两个交易所成立日算起,已有十多年的历史。虽然中国股票市场具有与生俱来的制度性缺陷,但我们不能否定股票市场对中国经济增长的积极作用,它的跨越式的发展为国有企业改革和国民经济的持续健康发展做出了积极的贡献。总体上看,中国股票市场正在不断规范中得到较快发展,那么我们就应该以发展的眼光看待中国股票市场的发展,在完善有关法规和规范市场主体的前提下,进一步发展和壮大股票市场,使其在国民经济的发展中发挥更大的作用。二十一世纪是知识化、信息化的网络时代。计算机信息技术的使用对股票市场的发展空间带来了质的变革,极大地拓展了股票市场的时空

10、界限,提高了人们对股票软件产品的学习兴趣和利用效率。以网络手段来获得股票数据资源的方式和利用网络作为基本的操作股票的形式,实现以资源共享为核心的全新的股票模拟交易方式,必将成为众多股民涉足股市前的必修课,并将成为新世纪的主流16。模拟交易系统中可以自行设立上市公司,通过完全独立的撮合过程,完成股票交易。由于这种模拟交易的对象和交易过程都是自成体系的,与真实股票市场完全脱钩,真实股市中股票价格变动不会对本系统的股票价格产生任何影响13。由于模拟交易的独立性和完整性,参与操作的使用者可以清楚地了解股票价格的形成过程及市场(如庄家)运作机制,同时也为使用者提供了一个在资本市场中角色扮演的机会,在科研

11、、教学及系统的可扩展性等方面优于前一种方式。这种方式更能够帮助使用者掌握股票交易系统的内在原理和运行机制,全面地熟悉上市公司的评价、股票的发行、证券品种的创建、市场投资者博弈及股价的形成原里等知识,为以后参与资本市场运作积累宝贵的实战经验。1.2 目前研究的现状1.2.1虚拟市场的研究市场模拟即虚拟市场研究是目前较为流行的一种研究方法,主要应用于在市场微观结构研究和学习行为等。主要方法是构造虚拟经济市场,设计虚拟经济人行为,编制计算机程序,利用计算机技术进行的一种研究方法1。计算机模拟市场使得研究者可以在受控的环境中研究市场微观结构和学习行为的各种理论。与多时期交易行为过程几乎从来都无法清楚的

12、进行建模的真人试验(human-based experiment)不同,虚拟经济人模型(agent-based model)可以很容易容纳复杂的学习行为、不对称信息、异质偏好、特殊的直觉(adhocheuristics)等。Garman(1976)、Cohen 等(1983)、Hakansson 等(1990)是金融市场虚拟经济人模型研究的先驱。Gode 和 Sunder(1993)利用这一框架描述了竞争市场的一个显著特点:即使没有任何形式的学习或者智力,在预算约束始终满足的前提下,随机交易的经济人最终收敛到了理性预期均衡10。另外一些学者通过限制他们给出的买卖报价的幅度给 Gode 和 Su

13、nder(1993)的零智力(zero-intelligence, ZI)交易人增加了不同程度的智力。通常这些限制包括最近观测的交易或者报价的某些函数8。例如,Jama 和 lSunder(1996)、Cliff和 Bruten(1997),他们都引入了简单的直觉来限制和改善那种简单的随机报价。更多学者开始研究交易行为随时间发展得更加复杂的计算机模拟市场。LeBaron(2000)总结了不少这样的计算机模拟的市场。这些模拟试图研究长期的市场现象以及短期的交易行为,并且是在个人层次上建立行为的理论12。1.2.2存在问题和不足系统实现了股价的实时更新,对特定的股票满足了虚拟交易。但用户在买卖过程

14、中,无法参考该股票的历史价格走势,进而无法对未来价格做出预测。在选择某只股票,作为购买对象的过程中,用户只能在事先已知股票代码的前提下,才可获得该股票明细,但无法看到其价格涨跌情况及交易数量。第2章 系统规划与需求分析本章主要结合系统平台的需求,提出平台的模块设计方案,并对模块的各功能进行描述。2.1 系统描述系统实现股价的实时更新,以及少量客户对特定几只股票的买卖。客户除可买卖股票外,也可对帐户余额进行更改。以期模拟股票交易流程。系统主要包括以下模块:2.1.1 用户管理模块用户是整个交易平台的主体,基于系统的安全性考虑,用户必须注册才能使用系统的各个功能,用户在未登录的情况下,不能进行发送

15、消息和买卖股票。用户可以注册成为新的帐户,登录系统。由于系统只是模拟股票交易,所有注册用户都未设置初始基金。在数据库中的user表中,只保存了注册用户的登录名。用户登录后,可以对自己的帐户信息进行查询、更改,包括基本资料和帐户余额。也可以查询输入股票代码,查询实时股价,并进行买卖,或者查询历史交易记录。2.1.2 股票交易模块由于系统治旨在对股票交易过程进行模拟,所以在交易时,只能对数据表中预存的几支特定过票进行买卖。用户可输入特定股票代码,查询股价,并输入数量,进行股票买入。若买入量总额大于用户账面余额,系统会提示金额不足。同时,页面显示目前用户手中持有的股票信息。包括买入价、数量、总额、买

16、入日期等。在交易历史记录中,列出了用户所有买卖记录,并计算出利润和亏损额。交易模块是整个系统的核心模块。其中涉及到的业务处理逻辑、所操作的表、以及页面展示都比较复杂。对应的数据表包括holding-存储用户所持股票、TransactionHistory-记录用户交易历史。2.2 功能描述2.2.1 注册功能需要在注册页面提交系统要求的简单的基本信息,包括用户名(无重复),密码,手机号码,电子邮箱。为了防止个别用户恶意刷系统注册用户,用户还需要阅读用户协议才能进行注册。页面上应当有友好的提示:用户输入内容的基本格式,例如用户名的限制,不能超过某一长度,允许使用那些字符等等。如果用户输入的信息有误

17、,需要在注册页面上给出详细的错误信息,以醒目的颜色在错误字段旁边显示即可,尽量不使用弹出框这种不友好的方式,除非像验证码这种只能在服务器端进行校验的字段。用户完成注册后,提示用户注册成功,进入自动跳转的页面,系统返回到用户在注册之前所停留的页面。2.2.2 登录注册用户需要在登录时提交自己的用户名和密码,服务器端进行验证后如果有错误发生,应当给出详细的提示,例如用户存在,用户名为空等等。在登录页面上,需要提供用户进入注册流程的快速通道,以方便非注册用户的使用。和注册功能相似,用户完成登录后,系统需要自动跳转到用户登录前所停留的页面,有未完成的动作的话自动完成。不同之处在于,登录结束时不需要出现

18、自动跳转的页面,避免浪费用户时间。2.2.3 股票查询股票查询功能尚未完善。查询前,用户需事先知道待查询的某支股票的代码,才可通过系统获得该股票的详细信息。查询包括对以持有股票的查询和对尚未购买的股票的查询。查询结果中包括股票代码、股票名称、当前价格(实时更新)等。若用户已持有该股票,则结果中还包含持有量、买入价和购入时间。2.2.4 股票买卖用户抛出所持有的股票时,需输入抛出量、抛出价等信息,其具体值都是参考股票查询结果而有用户自定义的。欲抛出的股票必须是已持有股票,抛出量不得大于持有量。当用户想购入一定量的某支股票时,也是根据股票查询的结果,输入购入价、购入量等信息。并保证所需总金额不得高

19、于用户帐户余额。2.2.5 历史查询用户可对交易的历史记录进行查看,以期总结经验与教训,并可以汇总某段时间的总盈利或亏损额。在不断总结的过程中,增长自己的积累。历史信息中展现了用户的交易记录,包括股票代码、状态(买入和卖出)、买入价、卖出价、数量等信息。2.2.6 实时股价实时股价指的是系统使用其他网站的股价查询接口,每两秒钟刷新一次当前的股价,从而实现了股价的不断更新。股价的更新提高了模拟交易系统的实用价值,使其更具有学习的意义。第3章 系统的总体设计本章介绍了系统开发过程中采用的J2EE框架,并详细阐述了总体架构和数据库设计方案。3.1 J2EE三层架构基于B/ S模式的信息系统一般由三层

20、构成,即用户界面层、业务逻辑层和数据服务层。J2EE三层架构如图3-1:图3-1: J2EE三层架构图3.1.1 用户界面层该层是系统的人机接口部分,用户和应用程序之间的交流在该层完成。通过用户界面层,用户可以完成获取数据、输入数据、修改数据、删除数据等一系列操作。用户界面层也包含了一定的安全机制,用户根据授权范围可以控制数据和机密信息。作为ASP程序,用户界面是典型的HTML或DHTML (也可能是XML) 页面,该层通过HTTP协议与业务逻辑层通信8。3.1.2 业务逻辑层该层是用户界面层和数据服务层的桥梁,它响应用户界面层的用户请求,执行任务并从数据服务层提取数据,然后将必要的数据传送给

21、用户界面层,从而实现用户界面层与数据服务层之间的交互。该层包含了在应用程序中执行关键处理的组件,这些应用程序遵守所有的业务规则及限制,典型的业务逻辑既可以体现在一个简单应用程序的ASP文件中,也可以很好地体现在COM组件中。3.1.3 数据服务层该层就是数据库管理系统(DBMS) ,它负责管理数据库中数据的读写。系统采用现在主流的关系数据库管理系统(RD2BMS) ,从业务逻辑层传送到数据服务层使用SQL语言,使其能迅速执行大量数据的更新和检索11。系统的三层体系结构三层中的核心是业务逻辑层,它将原本在两层客户机/ 服务器中客户端上的一些有关逻辑运算处理部分独立出来,并安装在业务逻辑层。由于所

22、有的商业运算规则集中在一个地方,所以当运算规则需修改的时候,只需修改业务逻辑层就能在用户界面层得到体现,而不需要修改每台客户机上的程序,这是三层B/ S结构的特点所在。三层B/ S结构的应用,最大限度地保证了数据的唯一性和安全性。3.2 架构设计3.2.1 MVC开发MVC模式减弱了业务逻辑接口和数据接口之间的耦合。“Model” 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),“View”是应用的表示面(由JSP页面产生),“Controller”是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可

23、以进行交互和重用9。三者的关系如图3-2所示:图3-2: MVC模型图我们可以看出,MVC 减弱了业务逻辑接口和数据接口之间的耦合,并且让视图层更富于变化。在MVC模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。同时,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可独立开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。而且,分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。针对系统的特点,在设计过程中,对传统的MVC做了层次上的细化,使之

24、更适合本系统。对于传统的MVC来说,最大的优点其实是把视图层从复杂的业务逻辑中提取了出来,并引入控制层的概念,实现视同层与业务逻辑的交互。而对于模型层,MVC提出者的定义是:系统的所有应用逻辑。在实际应用中,这是一个很宽的概念,应当根据系统自身的特点做适度的调整,否则容易造成模型层的过度臃肿,违背MVC的“松耦合”的初衷。当前基于B/S的系统的开发过程中,从我的理解来看,系统的所有应用逻辑主要分为两大类:纯粹的业务逻辑和持久化相关的业务逻辑。举个简单的例子来说明:几乎所有的系统都有“用户登录”的功能,该功能的在服务器端的主要流程如图3-3所示:图3-3: 简化的用户登录流程图从流程图中可以看出

25、,只有“查询用户”属于持久化的业务逻辑,验证用户存在和验证用户密码都属于纯粹的业务逻辑。对于绝大多数系统来说,持久化的业务逻辑是通用的,即CRUDCreate(创建),Read(读取),Update(修改),Delete(查询)。对于以CRUD操作为主的CMS、MIS系统,纯粹的业务逻辑相对简单,传统的MVC模式完全可以胜任;而对于类似系统的面向大众的服务产品来说,系统会更注重用户的体验,用户操作的方式将会更丰富,更生动,因而会引入大量的非CRUD的高端业务逻辑,在此条件下,将底层数据的访问工作(即持久化的操作)剥离出来是非常有必要的。从我的理解来看,在系统开发过程中,将底层数据访问的工作独立

26、出来作为单独的层次实现,实际上是对MVC模式的进一步解耦,并没有违背其基本思想,相反是针对系统自身特点对MVC模式的活学活用14。在系统的设计过程中,采用了这样的思路:MVC的模型层被拆分为两个独立的层次:服务层(即纯粹的业务逻辑层)和DAO层(数据持久化层)。并且,在服务层应用了J2EE的基本设计模式服务定位(Service Locator)模式,而在DAO层则应用J2EE的DAO(Data Access Object)模式。如图3-4所示:图3-4: 系统的MVC这样以来,系统的内聚和耦合度被降低到更低的层次;系统的层次划分更加清晰、简洁;更重要的是,这样的设计并不会影响系统的开发效率和运

27、行性能,而仅仅是在设计阶段增加了工作量,当然这个代价对整个系统来说,是很值得的。3.2.2 struts技术应用Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts10继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理,如下图3-5所示:ClientIE or NetscapeControllerActionServletBusiness LogicActionModelJavaBean or EJBViewJSPHTTPRequestAction FormHTTPResponses

28、truts-config.xml图3-5: Struts工作原理控制:通过图2-2可以看到有一个XML文件struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点15。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 ActionFrom(通常称之为FromBean),并传给动作类(通常称之为Ac

29、tionBean)。动作类实现核心商业逻辑,它可以访问JavaBean 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用Struts-config.xml文件来配置。其主体结构如图3-6所示:图3-6: 系统文件结构图从图中可以看出,在系统中所有服务对象基于J2EE三层体系结构的,这样的好处是各层之间保持了很好的独立性,而互相之间的调用是通过规范的接口来实现的。及时某一层的程序发生了变化,只需要修改调用他的接口,就可以保证另外两层的使用,二不需要做任何更改。三层之间的互相调用是通过application.xml文件配置的:application id=

30、Application_ID version=1.4 xmlns= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= TradeApplication TradeWeb.war Trade/web TradeEJB.jar Trade Application Administrators Trade Application Administrators TradeAdmin Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件

31、是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的.为Struts应用配置Web.xml文件:首先最重要的一步是配置ActionServlet,这个用标签的servlet-name属性起一个名字叫action,然后用servlet-class属性指定ActionServlet的类.然后用标签的servlet-name属性指定action,在用url-pattern指定接收范围是*.do的请求.不管应用中包含了多少子应用,都只需要配置一个ActionServlet,类来出来应用中的不同的功能,其实者就是不必

32、要的,因为Servlet本身就是多线程的,而且目前Struts只允许配置一个ActionServlet.声明ActionServlet的初始化参数:的子元素用来配置Servlet的初始化参数.param-name设置config参数名.param-value设置struts-config.xml的路径参数值.配置欢迎使用清单:如果客户访问Web的时候值是访问了WEB应用的根目录URL.没有具体的指定文件,Web会自动调用Web的欢迎文件.元素来配置的.通过其中的欢迎页面来配置.配置错误处理:尽管Struts框架功能强大的错误处理机制,但是不能保证处理所有的错误或者异常.当错误发生时,如果框架不

33、能处理这种错误,把错误抛弃给Web容器,在默认的情况下web容器会想客户端返回错误信息.如果想避免让客户看到原始的错误信息,可以在Web应用发布描述文件中配置元素.通过404来定义错误的类型.然后通过要处理错误的JSP页面来对错误进行处理.还可以用来设置异常,然后通过来处理异常的JSP页面来处理异常.配置Struts标签库:这个就和以前学到的JSP自定义标签类似,配置元素为来配置.这个指定标签库的uri,类似起一个名称.这个是标签库的位置也就是实际所在的路径.通过这样的方法引入一个标签库,然后在前台JSP页面就可以通过自己定义的URI来调用标签.Struts配置还包括元素、元素、元素、元素、元

34、素、元素、元素、元素、元素等其他元素的配置,这里就不一一赘述。3.2.3 Data Access ObjectData Access Object(DAO)是数据访问接口,这种模式是标准 J2EE 设计模式之一,实际开发中常利用这种模式将底层数据访问操作与高层业务逻辑分离开。数据访问对象(DAO)模式用来抽象和封装所有对数据源的访问,并管理着与数据源的连接以便检索和存储数据。DAO实现了用来操作数据源的访问机制。数据源可以是RDBMS,LDAP,File等。依赖于DAO的业务组件为其客户端使用DAO提供更简单的接口。DAO完全向客户端隐藏了数据源实现细节。由于当低层数据源实现变化时,DAO向客

35、户端提供的接口不会变化,所有该模式允许DAO调整到不同的存储模式,而不会影响其客户端或者业务组件。DAO的功能包括:封装数据源(data source)和封装数据库操作。一个典型的 DAO 实现有以下组件:a) 一个 DAO 工厂类 b) 一个 DAO 接口 c) 一个实现了 DAO 接口的具体类 d) 数据传输对象(有时称为业务对象) 系统开发过程中使用DAO我们可以将底层数据访问逻辑与业务逻辑分离开来。我们构建了为每一个数据源定义 GRUD (创建、读取、更新、删除)操作的 DAO 接口,在这些接口的实现中采用Hibernate,这样以后即使持久层技术有变化,例如采用了另外的ORM框架iB

36、atis,接口本身并不需要修改,仅改变接口的具体实现类即可。系统的持久化层采用Hibernate来实现,其核心接口SessionFactory负责初始化Hibernate,它充当数据存储源的代理,并负责创建Session对象。因此,不需要再额外地单独实现DAO的工厂类,这也符合软件开发过程中“不重复发明轮子”的理念。相对于传统的MVC模式,系统的四层体制更适合自身的开发需要,降低了各层之间的耦合度,在每一层的开发过程中,可以专注于自身的逻辑实现,并构建好与其它各层的交互接口,提高了系统的灵活性和可扩充性。3.2.4 其他层的设计此外,系统的视图层采用JSP(Java Server Page)技

37、术。为了使页面看起来更美观,引入层叠样式表CSS(Cascading Style Sheets);浏览器端的表单提交一律采用JavaScript进行本地校验(此为最低层次的校验,从系统安全性考虑,服务器端还需要有更高层次的校验);对于页面的局部更新,采用AJAX(Asynchronous JavaScript and XML)技术,具体来说是使用DWR(Direct Web Remoting)一个基于Java的AJAX引擎;页面上中的Java语句全部用JSP标签库JSTL(SP Standard Tag Library)来代替,简洁明了,方便阅读和修改。控制层采用MVC框架中的Servlet,

38、通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。 当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet。装入后, Servlet继续运行直到其它客户机发出请求。其控制流程如下:(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面。 (2) 创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)。 (3) 与其它服务器资源(包括数据库和基于Java的应用程序)进行通信。 (4) 用多个客户机处理连接,接收

39、多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet可以是多参与者的游戏服务器。 (5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如IIOP)进行通信。 (6) 对特殊的处理采用MIME类型过滤数据,例如图像转换和服务器端包括(SSI)。 (7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet可以修改如何认证用户。业务层通过EJB组件封装对数据层的增、删、改、查操作。一般

40、通过三种类型的bean对数据库进行操作:会话bean(Session Bean)、实体bean(Entity Bean)、消息驱动bean(MessageDriven Bean)。 (1).Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。 (2).Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean

41、对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。 (3).MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。3.3 业务对象设计系统的业务处理完全遵循MVC模型的设计思想

42、,采用模型层(model)、控制层(controller)和展现层(view)分离的目录组织方式。其结构如图3-7:图3-7: 文件分层组织模型其中,TradeEJB中包含了所有的JavaBean,每一个JavaBean对应一个实体对象,并提供所有字段的get和set方法。这些类以及预期相关的处理逻辑被分为两大类:Trade和TradeAdmin。每个包中又包含FormBean、model和Serlet三个子包,体现了MVC的开发思想。Trade包中包含所有涉及到股票交易过程的类,如:帐户类、交易历史类、已持股票类等;而TradeAdmin中主要包含与后台管理相关的JavaBean,如:模拟管

43、理员进行所有用户余额调整的类AdjustBalanceServlet和AdminLogger等。这些类之间的关系如图所示:图3-8:系统类图 3.4 数据库设计在设计过程中,结合系统应用的实际需要,系统数据库中主要包括用户数据、交易数据、历史数据等。数据库表结构建模:图3-7: 数据表E-R图表之间关系模式如下:帐户(帐户编号、客户编号、余额、交易历史)客户(编号、全称、Email地址、信用卡号、是否激活)地址(地址编号、类型、客户编号、联系地址1、联系地址2、城市、省份、国家、邮编)持股(编号、所属帐户、股票代码、数量)交易历史(编号、交易类型、所属帐户、股票代码、交易价格、成交量、成功否)

44、股票(股票代码、股票概述、是否激活)3.4.1 系统数据分析作为股票交易平台,用户是系统的核心数据。用户有基本资料、帐户、交易历史、住址等一系列属性。它们之间的关系如下图所示:数据库的表架构如表3-1所示数据库的表对应的功能Address用户详细住址Account用户帐户明细Holdings列出用户持有股票Profile保存用户基本资料Symbol特定股票明细TransactionHistory存储交易历史记录3.4.2 数据库的字段结构注意:建立数据字段的时候,CloudScape会自动生成ID字段,包含Account(accountid)、Holdings(holdingId)、Address(AddressID)、TransactionHistory(transactionId ),并且这个字段默认成为主键,自动增长的。数据库中各个表的详细字段信息如下所示: 帐户表Account:表名字段名字段描述AccountAccountid (PK)帐户ID(自动生成)UserID (FK)客户编号,关联ProfileTransactions (FK)交易历史,关联历史表Balance帐户余额 客户明细表Profile:表名字段名字段描述ProfileUserID (PK)客户编号(自动生成)Fu

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922