股票在线交易模拟系统设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
股票在线交易模拟系统设计与实现
作者:***
学号:*********
班级:信管0401
指导老师:***
职称:讲师
摘要
本文首先介绍了J2EE平台的体系架构,及基于该平台而诞生,并被广泛应用的MVC (model—view—controller)开发模型。
其次,简要描述了系统开发过程中使用到的关键技术—struts的原理及配置的核心代码。
在需求分析阶段,抽象出系统的功能结构图,并建立了数据库表结构及关系模型。
基于以上技术背景及系统需求,形成了开发规范。
其中包括文档、变量和数据表的命名规范,代码结构规范,及文件结构规范。
同时提出了系统开发所需的软、硬件环境需求。
然后,依据需求文档,逐一实现各个功能模块,并附带相应的核心代码,加以阐述详细设计过程和实现细节。
最后,编写简要测试用例,完善系统,以期达到预结果,完成系统的设计与实现。
关键词:J2EE、MVC、股票交易
Abstract
This 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 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. It 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 corresponding 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章绪论 (5)
第1.1节课题意义 (5)
第1.2节目前研究现状 (6)
虚拟市场的研究 (6)
存在问题和不足 (6)
第2章系统规划与需求分析 (7)
第2.1节系统描述 (7)
2.1.1用户管理模块 (7)
2.1.2股票交易模块 (7)
第2.2节功能描述 (7)
2.2.1注册功能 (7)
2.2.2 登录 (8)
2.2.3 股票查询 (8)
2.2.4 股票买卖 (8)
2.2.5 历史查询 (8)
2.2.6 实时股价 (9)
第3章系统的总体设计 (10)
第3.1节J2EE三层架构 (10)
3.1.1 用户界面层 (10)
3.1.2 业务逻辑层 (11)
3.1.3 数据服务层 (11)
第3.2节架构设计 (11)
3.2.1 MVC开发 (11)
3.2.2 struts技术应用 (14)
3.2.3 Data Access Object (18)
3.2.4 其他层的设计 (18)
第3.3节业务对象设计 (20)
第3.4节数据库设计 (21)
3.3.1 系统数据分析 (22)
3.3.2 数据库的字段结构 (22)
第3.5节开发环境的选取 (24)
3.4.1 Java开发工具 (24)
3.4.2 页面设计工具 (25)
3.4.3 Web服务器 (25)
3.4.4 系统数据库 (26)
第4章系统的实现 (27)
第4.1节通用实现流程 (27)
4.2.1视图层 (28)
4.2.2 控制层实现 (28)
4.2.3 业务逻辑层与持久化层 (29)
第4.2节功能详细实现 (29)
4.3.1欢迎页面 (30)
4.3.2帐户信息展现: (30)
4.3.3股票买卖 (31)
4.3.4股价实时更新 (32)
4.3.4帐户余额修改 (34)
4.3.5查询交易历史记录 (35)
第5章总结 (36)
参考文献 (37)
附录 (38)
功能实现的核心代码 (38)
帐户信息展现: (38)
股票买卖: (40)
帐户余额修改: (42)
交易历史查询: (43)
系统运行所需的基本环境 (45)
致谢 (46)
第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架构的股票交易系统的设计与实现。
不仅模拟了股票交易的流程,同时也模拟了运行环境。
第1.1节课题意义
我国的股票市场,从沪、深两个交易所成立日算起,已有十多年的历史。
虽然中国股票市场具有与生俱来的制度性缺陷,但我们不能否定股票市场对中国经济增长的积极作用,它的跨越式的发展为国有企业改革和国民经济的持续健康发展做出了积极的贡献。
总体上看,中国股票市场正在不断规范中得到较快发展,那么我们就应该以发展的眼光看待中国股票市场的发展,在完善有关法规和规范市场主体的前提下,进一步发展和壮大股票市场,使其在国民经济的发展中发挥更大的作用。
二十一世纪是知识化、信息化的网络时代。
计算机信息技术的使用对股票市场的发展空间带来了质的变革,极大地拓展了股票市场的时空界限,提高了人们对股票软件产品的学习兴趣和利用效率。
以网络手段来获得股票数据资源的方式和利用网络作为基本的操作股票的形式,实现以资源共享为核心的全新的股票模拟交易方式,必将成为众多股民涉足股市前的必修课,并将成为新世纪的主流[16]。
模拟交易系统中可以自行设立上市公司,通过完全"独立"的撮合过程,完成股票交易。
由于这种模拟交易的对象和交易过程都是"自成体系"的,与真实股票市场完全"脱钩",真实股市中股票价格变动不会对本系统的股票价格产生任何影响[13]。
由于模拟交易的独立性和完整性,参与操作的使用者可以清楚地了解股票价格的形成过程及市场(如庄家)运作机制,同时也为使用者提供了一个在资本市场中"角色扮演"的机会,在科研、教学及系统的可扩展性等方面优于前一种方式。
这种方式更能够帮助使用者掌握股票交易系统的内在原理和运行机制,全面地熟悉上市公司的评价、股票的发行、证券品种的创建、市场投资者博弈及股价的形成原里等知识,为以后参与资本市场运作积累宝贵的实战经验[6]。
第1.2节目前研究现状
虚拟市场的研究
市场模拟即虚拟市场研究是目前较为流行的一种研究方法,主要应用于在市场微观结构研究和学习行为等。
主要方法是构造虚拟经济市场,设计虚拟经济人行为,编制计算机程序,利用计算机技术进行的一种研究方法[1]。
计算机模拟市场使得研究者可以在受控的环境中研究市场微观结构和学习行为的各种理论。
与多时期交易行为过程几乎从来都无法清楚的进行建模的真人试验(human-based experiment)不同,虚拟经济人模型(agent-based model)可以很容易容纳复杂的学习行为、不对称信息、异质偏好、特殊的直觉(adhocheuristics)等。
Garman(1976)、Cohen 等(1983)、Hakansson 等(1990)是金融市场虚拟经济人模型研究的先驱。
Gode 和 Sunder(1993)利用这一框架描述了竞争市场的一个显著特点:即使没有任何形式的学习或者智力,在预算约束始终满足的前提下,随机交易的经济人最终收敛到了理性预期均衡[10]。
另外一些学者通过限制他们给出的买卖报价的幅度给 Gode 和 Sunder(1993)的零智力(zero-intelligence, ZI)交易人增加了不同程度的智力。
通常这些限制包括最近观测的交易或者报价的某些函数[8]。
例如,Jama 和 lSunder(1996)、Cliff和Bruten(1997),他们都引入了简单的直觉来限制和改善那种简单的随机报价。
更多学者开始研究交易行为随时间发展得更加复杂的计算机模拟市场。
LeBaron(2000)总结了不少这样的计算机模拟的市场。
这些模拟试图研究长期的市场现象以及短期的交易行为,并且是在个人层次上建立行为的理论[12]。
存在问题和不足
系统实现了股价的实时更新,对特定的股票满足了虚拟交易。
但用户在买卖过程中,无法参考该股票的历史价格走势,进而无法对未来价格做出预测。
在选择某只股票,作为购买对象的过程中,用户只能在事先已知股票代码的前提下,才可获得该股票明细,但无法看到其价格涨跌情况及交易数量。
第2章系统规划与需求分析
本章主要结合系统平台的需求,提出平台的模块设计方案,并对模块的各功能进行描述。
第2.1节系统描述
系统实现股价的实时更新,以及少量客户对特定几只股票的买卖。
客户除可买卖股票外,也可对帐户余额进行更改。
以期模拟股票交易流程。
系统主要包括以下模块:
2.1.1用户管理模块
用户是整个交易平台的主体,基于系统的安全性考虑,用户必须注册才能参与互动问答,用户在未登录的情况下,不能进行估价查询或者买卖股票。
用户可以注册成为新的帐户,登录系统。
由于系统只是模拟股票交易,所有注册用户都未设置登录密码。
在数据库中的account表中,只保存了注册用户的登录名。
用户登录后,可以对自己的帐户信息进行查询、更改,包括基本资料和帐户余额。
也可以查询输入股票代码,查询实时股价,并进行买卖,或者查询历史交易记录。
2.1.2股票交易模块
由于系统治旨在对股票交易过程进行模拟,所以在交易时,只能对数据表中预存的几支特定过票进行买卖。
用户可输入特定股票代码,查询股价,并输入数量,进行股票买入。
若买入量总额大于用户账面余额,系统会提示金额不足。
同时,页面显示目前用户手中持有的股票信息。
包括买入价、数量、总额、买入日期等。
在交易历史记录中,列出了用户所有买卖记录,并计算出利润和亏损额。
交易模块是整个系统的核心模块。
其中涉及到的业务处理逻辑、所操作的表、以及页面展示都比较复杂。
对应的数据表包括holding---存储用户所持股票、TransactionHistory----记录用户交易历史。
第2.2节功能描述
2.2.1注册功能
需要在注册页面提交系统要求的简单的基本信息,包括用户名(无重复),密码,性别,电子邮箱。
为了防止个别用户恶意刷系统注册用户,用户还需要输入系统随机
生成的验证字符(用jpeg图片显示)。
页面上应当有友好的提示:用户输入内容的基本格式,例如用户名的限制,不能超过某一长度,允许使用那些字符等等。
如果用户输入的信息有误,需要在注册页面上给出详细的错误信息,以醒目的颜色在错误字段旁边显示即可,尽量不使用弹出框这种不友好的方式,除非像验证码这种只能在服务器端进行校验的字段。
用户完成注册后,提示用户注册成功,进入自动跳转的页面,系统返回到用户在注册之前所停留的页面。
2.2.2 登录
注册用户需要在登录时提交自己的用户名和密码,服务器端进行验证后如果有错误发生,应当给出详细的提示,例如用户存在,用户名为空等等。
在登录页面上,需要提供用户进入注册流程的快速通道,以方便非注册用户的使用。
和注册功能相似,用户完成登录后,系统需要自动跳转到用户登录前所停留的页面,有未完成的动作的话自动完成。
不同之处在于,登录结束时不需要出现自动跳转的页面,避免浪费用户时间。
2.2.3 股票查询
股票查询功能尚未完善。
查询前,用户需事先知道待查询的某支股票的代码,才可通过系统获得该股票的详细信息。
查询包括对以持有股票的查询和对尚未购买的股票的查询。
查询结果中包括股票代码、股票名称、当前价格(实时更新)等。
若用户已持有该股票,则结果中还包含持有量、买入价和购入时间。
2.2.4 股票买卖
用户抛出所持有的股票时,需输入抛出量、抛出价等信息,其具体值都是参考股票查询结果而有用户自定义的。
欲抛出的股票必须是已持有股票,抛出量不得大于持有量。
当用户想购入一定量的某支股票时,也是根据股票查询的结果,输入购入价、购入量等信息。
并保证所需总金额不得高于用户帐户余额。
2.2.5 历史查询
用户可对交易的历史记录进行查看,以期总结经验与教训,并可以汇总某段时间的总盈利或亏损额。
在不断总结的过程中,增长自己的积累。
历史信息中展现了用户的交易记录,包括股票代码、状态(买入和卖出)、买入价、卖出价、数量等信息。
2.2.6 实时股价
实时股价指的是系统使用其他网站的股价查询接口,每两秒钟刷新一次当前的股价,从而实现了股价的不断更新。
股价的更新提高了模拟交易系统的实用价值,使其更具有学习的意义。
第3章系统的总体设计
本章介绍了系统开发过程中采用的J2EE框架,并详细阐述了总体架构和数据库设计方案。
第3.1节J2EE三层架构
基于B/ S模式的信息系统一般由三层构成,即用户界面层、业务逻辑层和数据服务层。
J2EE三层架构如图3-1:
图3-1: J2EE三层架构图
3.1.1 用户界面层
该层是系统的人机接口部分,用户和应用程序之间的交流在该层完成。
通过用户界面层,用户可以完成获取数据、输入数据、修改数据、删除数据等一系列操作。
用户界面层也包含了一定的安全机制,用户根据授权范围可以控制数据和机密信息。
作为ASP 程序,用户界面是典型的HTML或DHTML (也可能是XML) 页面,该层通过HTTP协议与业务逻辑层通信[8]。
3.1.2 业务逻辑层
该层是用户界面层和数据服务层的桥梁,它响应用户界面层的用户请求,执行任务并从数据服务层提取数据,然后将必要的数据传送给用户界面层,从而实现用户界面层与数据服务层之间的交互。
该层包含了在应用程序中执行关键处理的组件,这些应用程序遵守所有的业务规则及限制,典型的业务逻辑既可以体现在一个简单应用程序的ASP文件中,也可以很好地体现在COM组件中。
3.1.3 数据服务层
该层就是数据库管理系统(DBMS) ,它负责管理数据库中数据的读写。
系统采用现在主流的关系数据库管理系统(RD2BMS) ,从业务逻辑层传送到数据服务层使用SQL 语言,使其能迅速执行大量数据的更新和检索[11]。
系统的三层体系结构三层中的核心是业务逻辑层,它将原本在两层客户机/ 服务器中客户端上的一些有关逻辑运算处理部分独立出来,并安装在业务逻辑层。
由于所有的商业运算规则集中在一个地方,所以当运算规则需修改的时候,只需修改业务逻辑层就能在用户界面层得到体现,而不需要修改每台客户机上的程序,这是三层B/ S结构的特点所在。
三层B/ S结构的应用,最大限度地保证了数据的唯一性和安全性。
第3.2节架构设计
3.2.1 MVC开发
MVC模式减弱了业务逻辑接口和数据接口之间的耦合。
“Model”代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),“View”是应用的表示面(由JSP页面产生),“Controller”是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。
这些组件可以进行交互和重用[9]。
三者的关系如图3-2所示:
图3-2:MVC模型图
我们可以看出,MVC 减弱了业务逻辑接口和数据接口之间的耦合,并且让视图层更富于变化。
在MVC模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
同时,由于按层把系统分开,那么就能更好的实现开发中的分工。
网页设计人员可独立开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。
而且,分层后更有利于组件的重用。
如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。
针对系统的特点,在设计过程中,对传统的MVC做了层次上的细化,使之更适合本系统。
对于传统的MVC来说,最大的优点其实是把视图层从复杂的业务逻辑中提取了出来,并引入控制层的概念,实现视同层与业务逻辑的交互。
而对于模型层,MVC 提出者的定义是:系统的所有应用逻辑。
在实际应用中,这是一个很宽的概念,应当根据系统自身的特点做适度的调整,否则容易造成模型层的过度臃肿,违背MVC的“松耦合”的初衷。
当前基于B/S的系统的开发过程中,从我的理解来看,系统的所有应用逻辑主要分为两大类:纯粹的业务逻辑和持久化相关的业务逻辑。
举个简单的例子来说明:几
从流程图中可以看出,只有“查询用户”属于持久化的业务逻辑,验证用户存在和验证用户密码都属于纯粹的业务逻辑。
对于绝大多数系统来说,持久化的业务逻辑是通用的,即CRUD——Create(创建),Read(读取),Update(修改),Delete(查询)。
对于以CRUD操作为主的CMS、MIS系统,纯粹的业务逻辑相对简单,传统的MVC模式完全可以胜任;而对于类似系统的面向大众的服务产品来说,系统会更注重用户的体验,用户操作的方式将会更丰富,更生动,因而会引入大量的非CRUD的高端业务逻辑,在此条件下,将底层数据的访问工作(即持久化的操作)剥离出来是非常有必要的。
从我的理解来看,在系统开发过程中,将底层数据访问的工作独立出来作为单独的层次实现,实际上是对MVC模式的进一步解耦,并没有违背其基本思想,相反是针对系统自身特点对MVC模式的活学活用[14]。
在系统的设计过程中,采用了这样的思路:MVC的模型层被拆分为两个独立的
层次:服务层(即纯粹的业务逻辑层)和DAO层(数据持久化层)。
并且,在服务层
应用了J2EE的基本设计模式——服务定位(Service Locator)模式,而在DAO层则应用J2EE的DAO(Data Access Object)模式。
如图3-4所示:
图3-4: 系统的MVC
这样以来,系统的内聚和耦合度被降低到更低的层次;系统的层次划分更加清晰、简洁;更重要的是,这样的设计并不会影响系统的开发效率和运行性能,而仅仅是在设计阶段增加了工作量,当然这个代价对整个系统来说,是很值得的。
3.2.2 struts技术应用
Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。
Struts[10]继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
Struts的工作原理,如下图3-5所示:
图3-5: Struts工作原理
控制:通过图2-2可以看到有一个XML文件struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。
ActionServlet是一个通用的控制组件。
这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点[15]。
它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。
另外控制组件也负责用相应的请求参数填充ActionFrom(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。
动作类实现核心商业逻辑,它可以访问JavaBean 或调用EJB。
最后动作类把控制权传给后续的JSP 文件,后者生成视图。
所有这些控制逻辑利用Struts-config.xml文件来配置。
其主体结构如图3-6所示:
图3-6: 系统文件结构图
从图中可以看出,在系统中所有服务对象基于J2EE三层体系结构的,这样的好处是各层之间保持了很好的独立性,而互相之间的调用是通过规范的接口来实现的。
及时某一层的程序发生了变化,只需要修改调用他的接口,就可以保证另外两层的使用,二不需要做任何更改。
三层之间的互相调用是通过application.xml文件配置的:<?xml version="1.0" encoding="UTF-8"?>
<application id="Application_ID" version="1.4"
xmlns="/xml/ns/j2ee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee
/xml/ns/j2ee/application_1_4.xsd">
<display-name>TradeApplication</display-name>
<module id="WebModule_1103735079783">
<web>
<web-uri>TradeWeb.war</web-uri>
<context-root>Trade/web</context-root>
</web>
</module>
<module id="EjbModule_1105573768531">
<ejb>TradeEJB.jar</ejb>
</module>
<security-role>
<description>
Trade Application Administrators</description>
<description>
Trade Application Administrators</description>
<role-name>TradeAdmin</role-name>
</security-role>
</application>
Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的而struts-config.xml 文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称
的.
为Struts应用配置Web.xml文件:首先最重要的一步是配置ActionServlet,这个用<servlet>标签的servlet-name属性起一个名字叫action,然后用servlet-class 属性指定ActionServlet的类.然后用<servlet-mapping>标签的servlet-name属性指定action,在用url-pattern指定接收范围是*.do的请求.不管应用中包含了多少子应用,都只需要配置一个ActionServlet,类来出来应用中的不同的功能,其实者就是不必要的,因为Servlet本身就是多线程的,而且目前Struts只允许配置一个ActionServlet.声明ActionServlet的初始化参数:<servlet>的<init-param>子元素用来配置Servlet的初始化参数.param-name设置config参数名.param-value设置struts-config.xml的路径参数值.
配置欢迎使用清单:如果客户访问Web的时候值是访问了WEB应用的根目录URL.没有具体的指定文件,Web会自动调用Web的欢迎文件.<welcome-file-list>元素来配置的.通过其中的<welcome-file>欢迎页面</welcome-file>来配置.
配置错误处理:尽管Struts框架功能强大的错误处理机制,但是不能保证处理所有的错误或者异常.当错误发生时,如果框架不能处理这种错误,把错误抛弃给Web容器,在默认的情况下web容器会想客户端返回错误信息.如果想避免让客户看到原始的错误信息,可以在Web应用发布描述文件中配置<error-page>元素.通过<error-code>404来定义错误的类型.然后通过<location>要处理错误的JSP页面来对错误进行处理.还可以用<exception-type>来设置异常,然后通过<location>来处理异常的JSP页面来处理异常.
配置Struts标签库:这个就和以前学到的JSP自定义标签类似,配置元素为<taglib>来配置.<taglib-uri>这个指定标签库的uri,类似起一个名称.<taglib-location>这个是标签库的位置也就是实际所在的路径.通过这样的方法引入一个标签库,然后在前台JSP页面就可以通过自己定义的URI来调用标签.
Struts配置还包括<struts-config>元素、<data-sources>元素、<form-beans>元素、<global-exception>元素、<global-forwards>元素、<action-mapping>元素、<controller>元素、<message-resources>元素、<plug-in>元素等其他元素的配置,这里就不一一赘述。
3.2.3 Data Access Object
Data Access Object(DAO)是数据访问接口,这种模式是标准J2EE 设计模式之一,实际开发中常利用这种模式将底层数据访问操作与高层业务逻辑分离开。
数据访问对象(DAO)模式用来抽象和封装所有对数据源的访问,并管理着与数据源的连接以便检索和存储数据。
DAO实现了用来操作数据源的访问机制。
数据源可以是RDBMS,LDAP,File等。
依赖于DAO的业务组件为其客户端使用DAO提供更简单的接口。
DAO完全向客户端隐藏了数据源实现细节。
由于当低层数据源实现变化时,DAO向客户端提供的接口不会变化,所有该模式允许DAO调整到不同的存储模式,而不会影响其客户端或者业务组件。
DAO的功能包括:封装数据源(data source)和封装数据库操作。
一个典型的DAO 实现有以下组件:
a)一个DAO 工厂类
b)一个DAO 接口
c)一个实现了DAO 接口的具体类
d)数据传输对象(有时称为业务对象)
系统开发过程中使用DAO我们可以将底层数据访问逻辑与业务逻辑分离开来。
我们构建了为每一个数据源定义GRUD (创建、读取、更新、删除)操作的DAO 接口,在这些接口的实现中采用Hibernate,这样以后即使持久层技术有变化,例如采用了另外的ORM框架iBatis,接口本身并不需要修改,仅改变接口的具体实现类即可。
系统的持久化层采用Hibernate来实现,其核心接口SessionFactory负责初始化Hibernate,它充当数据存储源的代理,并负责创建Session对象。
因此,不需要再额外地单独实现DAO的工厂类,这也符合软件开发过程中“不重复发明轮子”的理念。
相对于传统的MVC模式,系统的四层体制更适合自身的开发需要,降低了各层之间的耦合度,在每一层的开发过程中,可以专注于自身的逻辑实现,并构建好与其它各层的交互接口,提高了系统的灵活性和可扩充性。
3.2.4 其他层的设计
此外,系统的视图层采用JSP(Java Server Page)技术。
为了使页面看起来更美观,引入层叠样式表CSS(Cascading Style Sheets);浏览器端的表单提交一律采用JavaScript进行本地校验(此为最低层次的校验,从系统安全性考虑,服务器端还需要有更高层次的校验);对于页面的局部更新,采用AJAX(Asynchronous JavaScript and XML)技术,具体来说是使用DWR(Direct Web Remoting)——一个基于Java的AJAX。