基于WWW的协同式CAI软件的Java实现 第4页


4.1 数据库访问
  Virsual J++针对Microsoft操作系统对Java类库做了专门的扩展,它将Java与COM(组件对象模型)和支持Java的Internet Explorer 3.0浏览器相集成,用户可在Java程序中访问任何支持COM的软件。对于数据库的访问,在J++中提供了DAO(Data Access Object)和RDO(Remote Data Object)两种方法。本软件中采用RDO对象实现对ODBC数据源数据的访问。由于对数据库的连接是建立在ODBC的基础上,所以可以支持对各种类型的数据库访问。笔者采用的是Access数据库。
  通常,Java Applet是在一个“沙箱”中运行,可访问的资源有限,使用COM服务意味着存取沙箱之外的资源,为此,IE在安全性上要作严格的检查,它将Java类分为可信类和不可信类,不可信类不能使用COM服务,所有不是从类路径装入的类都是不可信的,包括从网上下载的类,除非它们被封装在具有一个数字签名的.CAB文件中。为了避免安全性带来的麻烦和减少客户端的ODBC配置,笔者在访问试题库的部分中采用了由服务器方Java应用程序访问数据库的办法,无安全性限制。浏览器方Applet程序通过与服务器方应用程序通信来传递访问请求和结果。
  整个系统的数据库表格设计如下:
. 填空题表:含试题标识号、问题号、难度、试题内容、答案共五个字段。
. 判断题表:结构同上。
. 填空题试卷表:试题标识号、分数共两字段。
. 判断题试卷表:结构同上。
. 教学内容索引表:含章号、节号、问题号、问题名、URL地址共五个字段。
. 章标题表:含章号、标题共两字段。
. 节标题表:含章号、节号、标题共三个字段。
.
成绩登记库:含姓名,成绩两字段。
  从数据库设计可看出,本系统将教学内容与试题库中试题通过问题号连接起来。
4.2 数据通信处理
  从总体设计可知,系统有两类应用,它们有不同的工作特点。基于客户/服务器的应用是客户方发出访问请求后,再直接在事件代码中获取服务方返回的结果;而对于协作应用则必须在所有客户方分别设立消息监听线程去获取和处理数据。从实现效率上考虑,这两类应用不宜共用一条Socket通道。笔者采用了双Socket通路的办法。在服务方设立两个Socket监听口,分别是8883和8884,所有客户端要分别针对两个监听口建立Socket连接。为避免创建过多线程,并将两类应用通道分开,系统在通道的使用上作了一些特殊处理,具体情况说明如下:
  
. 学生客户:使用8883口发送消息,使用8883口接收数据库访问结果,使用8884口接收所有其它消息。

上一页  [1] [2] [3] [4] [5] [6] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有