1、57第三章 企业计算模式提要:本章介绍计算机应用系统的三种计算模式,即单主机计算模式、分布式客户/服务器计算模式和浏览 器/服务器计算模式,讨论上述三种计算模式各自的结构特征及计算模式的变化对管理信息系统发展的影响。最后, 讲述管理信息系统开发中常用的客户/服务器 计算模式和浏览器/服务器计算模式的实现技术。计算机应用系统中数据与应用(程序)的分布方式称为企业计算机应用系统的计算模式,有时也称为企业计算模式。自世界上第一台计算机诞生以来,计算机作为人类信息处理的工具已有半个多世纪了,在这个发展过程中计算机应用系统的模式发生了几次变革。计算机应用系统已经历了三种计算模式,它们分别是:单主机计算模
2、式、分布式客户/服务器计算模式(Client/Server C/S)和浏览器/服务器计算模式(Browser/ServerB/S) ,这三种计算模式的出现与计算机、网络及数据库技术的发展一脉相承,并决定了计算机应用系统的硬件、软件结构的特征。第一节 单主机计算模式1985 年以前,计算机应用一般是以单台计算机构成的单主机计算模式。单主机计算模式又可细分为两个阶段。单主机计算模式的早期阶段,计算机应用系统所用的操作系统为单用户操作系统,系统一般只有一个控制台(见图 3-1) ,限于单项应用,如劳资报表统计等。分时多用户操作系统的研制成功,以及计算机终端的普及使早期的单主机计算模式发展成为单主机多
3、终端的计算模式(图 3-2) 。图 3-1 早期的单主机计算模式58在单主机多终端的计算模式中,用户通过终端使用计算机。每个用户都感觉好象是在独自享用计算机的资源,但实际上主机是在分时轮流为每个终端用户服务。单主机多终端的计算模式在我国当时一般称为“计算中心” ,在单主机模式的这个阶段中,计算机应用系统中已可实现多个应用(如物资管理和财务管理)的联系,但由于硬件结构的限制,我们只能将数据和应用(程序)集中地放在主机上,因此单主机多终端计算模式有时也被称为集中式的企业计算模式。第二节 客户/服务器计算模式20 世纪 80 年代个人计算机(PC)的蓬勃发展和局域网技术趋于成熟,使用户通过计算机网络
4、共享计算机资源,计算机之间通过网络可协同完成某些数据处理工作。虽然 PC 机的资源有限,但在网络技术的支持下,应用程序不仅可利用本机资源,还可通过网络方便地共享网上其它计算机资源,在这种背景下形成了分布式客户/服务器( C/S)的计算模式。在客户/服务器模式中,网络中的计算机被分为两大类:一是向其它计算机提供各种服务(主要有数据库服务,打印服务等)的计算机,称为服务器,二是享受服务器提供服务的计算机,称为客户机。客户机一般由微机担当,运行客户应用程序模块(也就是说应用程序被分散地安装在每一台客户机上!这是 C/S 模式应用系统的重要特征!) 。部门级和企业级的计算机作为服务器运行服务器系统软件
5、(如数据库服务器系统,文件服务器系统等),向客户机提供相应的服务。主机 终端图 3-2 单主机多终端计算模式59客户/服务器模式的计算机应用系统的基本结构见图 3-3。在 C/S 模式中,数据库服务是最主要的服务,客户机将用户的数据处理请求通过客户端的应用程序发送到数据库服务器,数据库服务器分析用户请求,实施对数据库的访问与控制并将处理结果返回给客户端。在这种模式下,网络上传送的只是数据处理请求和少量的结果数据,网络负担较小。应当指出的是,在复杂 C/S 模式的应用系统中,数据库服务器一般情况下不只有一个,而是按数据的逻辑归属和整个系统的地理安排可能有多个数据库服务器(如各子系统的数据库服务器
6、及整个企业级数据库服务器等) ,企业的数据分布在不同的数据库服务器上,因此,C/S 模式有时也称为分布式客户/服务器计算模式。C/S 模式是一种较为成熟且应用广泛的企业计算模式,其客户端应用程序的开发工具也较多,这些开发工具分两类:一类为针对某一种数据库管理系统的开发工具(如针对 Oracle 的 Developer 2000) ,另一类为对大部分数据库系统都适用的前端开发工具(如 Power Builder,Visual Basic,Visual C,Delphi,C + Builder,Java 等) 。第三节 浏览器/服务器计算模式采用 C/S 模式的企业计算机应用系统中,每一个客户机都
7、必须安装并正确配置相应的数据库客户端驱动程序。这样,应用程序(也必须安装在客户机上)才能访问数据库。由于应用程序被分布在各个客户机上,这种形式使系统的维护困难且容易造成不一致性。浏览器/服务器(B/S)模式是在 C/S 模式的基础上发展而来的。导致 B/S模式产生的源动力来自不断增加的业务规模和不断复杂化的业务处理请求,解决这个问题的方法是在传统 C/S 模式的基础上,增加中间应用层(商业逻辑层) ,图 3-3 C/S 模式的计算机应用系统基本结构数据库服务器客户机(应用程序)60由原来的两层结构(客户/服务器)变成三层结构(图 3-4) 。用户界面层 数据库层商业逻辑层图 3-4 三层结构示
8、意图在三层应用结构中,用户界面(客户端)负责处理用户的输入和向客户的输出(出于效率的考虑,它可能在向上传输用户的输入前进行合法性验证) 。商业逻辑层负责建立数据库的连接,根据用户的请求生成访问数据库的 SQL 语句,并把结果返回给客户端。数据库层负责实际的数据库存储和检索,响应中间层的数据处理请求,并将结果返回给中间层。B/S 模式就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web 服务器/数据库服务器。采用 B/S 模式的计算机应用系统的基本结构见图3-5。由于 Internet 及企业 Intranet 的应用采用 B/S 模式,因此 B/S 模式也称为网络计算模式。在 B/
9、S 模式中除了数据库服务器外,应用程序以网页形式(用超文本标识语言(HTML )编写)存放于 Web 服务器上,用户运行某个应用程序时只须在客户端上的浏览器中键入相应的网址(URL) ,调用 Web 服务器上的应用程序并对数据库进行操作完成相应的数据处理工作,最后将结果通过浏览器显示给用户。可以说,B/S 模式的计算机应用系统中,应用(程序)在一定程度上具有集中特征。由上述可以看出,按 B/S 模式建立的应用系统的特征是客户端只须安装普遍使用的浏览器(如微软公司的 IE 或网景公司的 Netscape 等) ,而应用程序被Web服务器数据库服务器客户端(浏览器)图 3-5 B/S 模式的计算机
10、应用系统结构61相对集中地存放在 Web 服务器上。以 B/S 模式开发企业管理信息系统,由于在客户端只须一个简单的浏览器,因此减少了客户端的维护工作量,方便了用户使用。同时,也正是这样的“瘦”客户端,使我们能够方便地将任何一台计算机通过计算机网络或互连网连入到企业的计算机系统,成为企业管理信息系统的一台客户机。上述表明,B/S 模式的出现,极大地扩大了管理信息系统的功能覆盖范围,从而革命性地改变了计算机应用系统面貌。B/S 模式出现之前,管理信息系统的功能覆盖范围主要是企业内部。B/S 模式的“瘦”客户端方式,使企业的供应商和客户(这些供应商和客户有可能是潜在的,也就是说可能是事先未知的!)
11、的计算机方便地成为企业管理信息系统的客户端,进而在限定的功能范围内查询企业相关信息,完成与企业的各种业务往来的数据交换和处理工作(这是因为:只要这些潜在的供应商和客户知道企业管理信息系统的网址就可以了!) 。B/S 模式的计算机应用系统使企业能够把供应商和客户作为企业的资源来进行管理,从技术上保证了企业资源规划系统(Enterprise Resource Planning ERP)的实现(见图 3-6) 。另外,B/S 模式的企业计算机应用系统与 Internet 的结合也使新近提出的一些新的企业计算机应用(如电子商务,客户关系管理)的实现成为可能。在 B/S 模式中,存放在 Web 服务器上
12、的应用程序是通过公共网关接口(Common Gateway InterfaceCGI)实现对数据库操作的,但用 CGI 方式完成上述工作占用系统资源较大,因此 Web 浏览器厂商和数据库厂商竞相出台中间件,如微软公司的 Internet 服务器应用程序接口(Internet Server Application InterfaceISAPI) ,以取代 CGI,实现 Web 服务器上应用程序对数据库服务器的访问和操纵(见图 3-7) 。图 3-6 ERP 与传统 MIS 的关系MIS供应商 客 户 ERP62与 C/S 模式相比,以 B/S 模式建立的计算机应用系统中,客户端变的简单(只要安装
13、浏览器即可!) ,应用程序以网页的形式存放在 Web 服务器上,这不仅方便了企业内用户的应用,也使企业的客户和供应商方便地通过计算机网络与企业进行业务活动,扩大了企业计算机应用系统的功能覆盖范围,可以更加充分利用网络上的各种资源,同时应用程序维护的工作量也大大减少。虽然 B/S 模式的计算机应用系统有如此多的优越性,但由于 C/S 模式的成熟性且 C/S 模式的计算机应用系统网络负载较小,因此,未来一段时间内,管理信息系统开发中企业计算模式将是 B/S 模式和 C/S 模式共存的情况。但是,很显然,企业计算机应用系统计算模式的发展趋势是向 B/S 模式转变。第四节 客户/服务器模式的技术实现从
14、前文可知,客户/服务器模式是一种较成熟的计算模式,由于其网络开销低,目前仍应用非常广泛。本节介绍客户/服务器模式在具体应用中的实现技术。一、 客户/服务器模式的工作原理在客户/服务器模式下,应用的实现大体上可划分为两大部分:客户端应用程序(也称为“前台” )和服务器程序(“后台” ) 。前台应用程序提供用户界面,接收用户输入,并向服务器发出相应的请求;后台服务程序负责响应前台应用程序的请求,并将结果返回给前台(图 3-8) 。浏览器 Web服务器Microsoft ISAPIOracleWeb ServerCGI 数据库服务器数据库中间件ASP图 3-7 应用程序通过 CGI 或中间件访问数据
15、库63为了实现对客户端的响应,在服务器中必须启动相应的服务程序,这些程序一般在后台运行。在客户/服务器的计算模式中,提出请求的一方称为 Client,而对请求作出应答的一方称为 Server。一台服务器可运行多个服务程序,即可响应多种或多个请求,一台客户机也可能向多个不同的服务器发送不同的请求。也就是说,Client 和 Server 从概念上来讲是相对的:当一台计算机向另一台计算机发送请求时,该计算机(严格来讲是该计算机上运行的发出请求的那个程序)即为 Client,而响应该请求的那台计算机则为 Server。这里应当指出的是,大部分情况下客户端应用程序和后台服务程序在不同的计算机上,但有时
16、它们也被放在同一台计算机上。二、 通过交互式查询工具实现数据库访问数据库管理系统厂商一般都提供一种称为“交互式查询工具”的客户端软件来实现对后台服务器端数据库中数据的访问。下面以 Oracle 数据库厂商提供的交互式查询工具 SQL*Plus 为例,介绍 C/S模式下的数据访问的实现技术。假定我们具有的系统环境为:服务器上运行 Windows NT Server 4.0,服务器名为 NTSVR,网络协议为 TCP/IP,服务器 IP 地址为 192.168.63.12,数据库管理系统为 Oracle7.3。在上述服务器上已创建了 Oracle 用户 stu,建立了数据库表employeeinf
17、o, (其结构及内容分别见表 3-1、表 3-2) 。用户 stu 具有对表employeeinfo 的记录添加、删除、修改的权限。表 3-1 表 employeeinfo 的结构列名 含义 数据类型 数据宽度 说明Employeeno 员工编号 字符型 6 数字编码Empname 姓名 字符型 10 5 个汉字宽度Birthdate 生日 日期型 8Sex 性别 字符型 1 M:男 F:女Salary 薪水 数字型 5.2 单位:元(人民币)AnswerRequestClient Server图 3-8 C/S 模式下应用程序工作过程6465表 3-2 表 employeeinfo 的内容E
18、mployeeno Empname Birthdate Sex Salary277052 王伟怀 19-JUL-69 M 1117.29279809 周 梦 08-SEP-70 F 1028.58456789 廖卫东 18-DEC-79 M 856.76576868 谢 敏 22-SEP-76 F 962.73807956 徐瑞忠 24-MAY-62 M 1168.36809139 黄建伟 11-JAN-67 M 1038.91819999 李 华 23-FEB-63 F 1138.81891212 孙 凯 15-MAY-71 M 1069.94892207 叶卓辛 12-AUG-64 M 1
19、235.88893448 江文济 28-JUL-65 M 1043.18897903 金 娜 27-DEC-65 F 1212.76980931 向济辉 06-AUG-70 M 997.38(一) 本地访问最简单的一种情况是用户从服务器本地直接访问数据库。Oracle 提供的查询工具 SQL*Plus(SQL 的含义为 Structured Query Language,结构化查询语言)是一种交互式的数据访问工具,用户可应用 SQL*Plus 提供的命令完成建立数据库连接,定义(创建)数据库表、向数据库表添加数据记录、修改数据库记录及对数据库表的统计查询等操作。运行 SQL*Plus 后的登录
20、界面见图 3-9。图 3-9 本地访问 SQL*Plus 的登录窗口正确输入用户名和口令后,SQL*Plus 显示版本信息及 SQL 命令提示符(图3-10) 。66图 3-10 Oracle SQL*Plus 版本信息这表明用户已经正确登录到数据库,可以在 SQL 命令提示符下键入 SQL 命令来访问数据库。比如,用户想知道薪水在 1000 元(含)以上的女性员工的情况,可以键入:SQLselect * from employeeinfo where sex= F and salary=1000;上述 SQL 命令的运行结果见图 3-11。图 3-11 SQL*Plus 的运行结果这里,Cl
21、ient 端和 Server 端是在同一台计算机中运行的两个不同的程序,应用程序(SQL*Plus)的请求和数据库应答均在本地完成,没有通过网络传输。SQL*Plus 命令提示符SQL*Plus 版本信息ORACLE 服务器信息67(二) 远程访问对数据库的远程访问是指 Client 及 Server 不在同一台计算机上的 C/S 模式的实现。假定用户想从局域网的另一台计算机 WS1 来访问服务器 NTSVR 上的数据库,计算机 WS1 的操作系统为 Windows98,已安装 TCP/IP 协议,并已正确连到服务器所在的局域网上。实现从客户机 WS1 访问服务器 NTSVR 上数据的步骤为:
22、Step 1:在 WS1 上安装 Oracle 的客户端程序,包括 Oracle TCP/IP Protocol Adapter,SQL*Net Client,SQL*Plus。Step 2:用 Oracle 客户端工具(SQL Net Easy Configure)在客户端计算机WS1 上建立一个数据库别名(Database Alias) ,并对其进行参数配置。客户端的交互式数据库查询工具 SQL*Plus 将通过该数据库别名定向访问数据库中的数据。数据库别名及其内容的定义见图 3-12,这里数据库别名取名为myorasvr,协议选择为 TCP/IP,主机名称栏中填入服务器的 IP 地址,本
23、例中为 192.168.63.12,数据库实例取默认值 ORCL 即可。Step 3:运行 SQL*Plus。与本地访问不同的是,在“主机字符串”一栏须填入我们已定义的数据库器别名 myorasvr(图 3-13) 。图 3-12 通过 SQL*Net 建立数据库别名图 3-13 远程访问的 SQL*Plus 登录窗口68当我们确认后,SQL*Plus 将显示版本信息及 SQL 提示符,表明用户正确连接到数据库,可以访问数据库了。此时,若用户在 SQL 提示符后键入上文的SQL 命令,将得到同样的结果。显然,从服务器本地访问数据库和从网络中另一台计算机访问数据库在建立客户端与服务器端的连接之后
24、是一样的。从服务器本地访问数据库时,因为数据库在本地,故所有针对数据库的请求均不需要网络传输,因此不需要配置网络数据库别名(当然,也可以在服务器本地给自己配置一个别名,IP 地址一栏填写本机地址,效果是一样的) 。从网络中另一台计算机访问数据库时,客户程序须知道将数据访问请求发送给谁,即客户想查询的是 NTSVR 上的的数据库,而不是其它服务器上的数据库。数据库别名的作用就是标识数据库访问路径,它通过指定协议、IP 地址和实例名来唯一识别一个远程的数据库,这样登录信息就会发送到指定的远程数据库上,登录成功后就会建立该数据库的连接。于是,在此之后,所有的基于此连接的 SQL 命令将被发送到该远程
25、数据库上,并由该数据库负责响应。从以上讨论可知,对数据库的访问实质上是一个不断的请求和应答过程,从登录数据库开始,到每一个 SQL 命令的执行均是如此。三、 通过开发工具的专用接口实现数据库访问数据访问用户可分为两大类:一类是高级用户(比如系统管理员) ,另一类是普通用户。高级用户一般具备较高的计算机及数据库管理的理论和实际操作水平,故他们可能更多地直接操纵数据。一般用户则仅关注与自己业务相关的数据和操作,希望能方便直观地录入、查询、维护所负责业务领域内的数据。对于高级用户,一般采用交互式数据库访问工具(如前文所述的SQL*Plus)进行数据库性能的调整、控制、维护等管理工作。对普通用户,则由
26、专用的应用程序来实现他们的需求,这些应用程序的开发,一般借助特定的开发工具来完成。常见的应用程序开发工具有 Visual Basic(简称 VB) 、Visual C+(简称VC) 、 Power Builder(简称 PB) 、Delphi 等。这里以 PB6.0 为例,介绍前台程序与数据库的联接方式,至于其它不同的开发工具,从原理上是相同的,有兴趣的读者可自行参考有关书籍。我们通过一个员工信息的查询及修改为例,介绍用 PB6.0 开发 C/S 模式应用的关键步骤。69PB6.0 中对数据操作都是通过数据窗口( DataWindow)来实现的。对于上面的查询要求,我们可以按如下步骤给出其实现
27、过程,读者可通过该过程了解C/S 模式应用程序开发中的数据访问原理。Step1:在 PB6.0 中,创建一个数据窗口(取名为 dw_employeeinfo) (见图3-14) 。Step2:在窗口的 open 事件中,写入如下程序代码:定义数据库连接与数据库建立连接出错时报告错误信息并关闭窗口sqlca.dbms=O73 / dbms 为 Oracle 7.3sqlca.logid=stusqlca.logpass=stusqlca.servername=myorasvrconnect ;if sqlca.sqlcode Oracle Database SQL Server SQL Serv
28、er 从图 3-16 可以看出,ODBC 实质上是一个封装器,它将对各种不同数据库的访问定义为不同数据源,而应用程序对不同的数据源的处理是一致的,这样就屏蔽了不同驱动程序(Driver)之间的差异。应用 ODBC 实现对数据库的连接必须具备两个条件:支持该数据库的 ODBC 驱动程序已经正确安装。用户通过 ODBC 管理器正确配置了对该数据库的连接。只要具备了这两个条件,就可以在应用程序中通过 ODBC 来访问数据库。关于第一个条件,大多数数据库管理系统在安装时均会自动装载其自身的ODBC 驱动程序,而且很多专门的第三方的 ODBC 驱动程序可以从网上下载安装。对于第二个条件,在 Window
29、s NT 中,可通过控制面版中的 ODBC 数据源管理器创建及配置 ODBC 数据源。图 3-16 ODBC 工作原理示意图图 3-17 ODBC 数据源管理器窗口72如对 ORACLE 访问的 ODBC 配置可按如下步骤进行:在“用户 DSN”页面内,点击“添加” ,在“创建新数据源”窗口(图 3-18)中选择“Microsoft ODBC for Oracle”后单击“完成”按钮,然后在“Microsoft ODBC for Oracle 安装”窗口中设置好有关参数(见图 3-19,其中服务器一栏 myorasvr 是我们用SQL*Net 定义的数据库别名) 。这样我们就为 myorasv
30、r 建立了一个名为 Orasvr 的 ODBC 连接。如果希望用 PB6.0 编写通过 ODBC 实现上例中对数据库访问的应用程序,只需修改 Open 事件程序代码中的数据库连接定义,其它程序代码不变。修改后的数据库联接定义如下:sqlca.dbms=odbcsqlca.DbParm=“Connectstring=DSN=orasvr;UID=stu;PWD=stu; “与通过开发工具专用接口实现数据库访问不同的是,用 ODBC 访问数据库时,图 3-18 创建新数据源窗口图 3-19 设置 Microsoft ODBC for Oracle 数据源窗口73数据库连接定义中的 dbms 项为“
31、ODBC” ,而不是“O73” 。也就是说,数据库访问请求不是直接通过 SQL*Net 发给了服务器,而是先交给 ODBC,ODBC 再根据不同的数据源(DSN)采取相应的处理。第五节 浏览器/服务器模式的技术实现目前在 Windows 环境中 B/S 模式应用的实现技术主要有:公共网关接口 CGICGI 是较早实现的技术,适用于多种服务器平台,如 UNIX、Windows 等。但用 CGI 开发 B/S 的应用比较困难,占用服务器资源也比较多。Internet 数据库连接器 IDC(Internet Database Connector)IDC 是集成在 Internet Server AP
32、I(ISAPI)的应用,充分利用了 DLL(动态链接库)技术,易扩充,但编程较 CGI 更为复杂,只适用于小型数据库系统。另外,目前 ISAPI 还不具备跨平台的功能,只限于 Windows NT 平台。先进数据库连接器 ADC(Advanced Database Connector)ADC 提供了 ActiveX Control 来访问数据库,其数据查询操作是在用户端的浏览器上执行的,为此 ADC 需要将服务器端数据库中部分记录先下载到用户端,故系统开销较大、响应慢,但对一些特别频繁且重复性的数据库查询操作具有很好的反应速度。JAVA/JDBC 语言编程JAVA 语言是一种面向对象、易移植、
33、多线程控制的语言,通过 JDBC 去连接数据库。用 JAVA/JDBC 编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还不太理想,不适于建立高效、高速的应用。Oracle WebServer这是一种典型的由数据库厂商提供与 Web 服务器集成在一起的中间件。动态服务器页面(Active Server PageASP)ASP 是微软公司最新推出的 Web 应用开发技术,主要用于动态网页和 Web 数据库访问的应用开发,编程灵活、简洁,具有较高的性能,是目前访问 Web 数据库比较好的选择。限于篇幅,本节仅以 ASP 为例,简单介绍 B/S 模式的实现技术。74一、 ASP 的工
34、作原理(一) ASP 的含义从字面上说,ASP 包含三方面含义: Active:ASP 使用了 Microsoft 的 ActiveX 控件技术。ActiveX 控件技术是现在 Microsoft 软件的重要基础,它采用封装对象、程序调用对象的方式,简化编程,加强程序间合作。ASP 本身封装了一些基本组件和常用组件,有很多公司也开发了很多实用的第三方组件,只要在服务器上安装这些组件,就可以方便快速地建立 B/S 应用。 Server:ASP 可以运行在服务器端,这样就不必担心浏览器是否支持 ASP所使用的编程语言。ASP 的编程语言可以是 VBScript 和 JavaScript,其中VBS
35、cript 是 VB 的一个简集,会 VB 的人可以很方便的快速上手。虽然 Netscape浏览器不支持客户端的 VBScript,但只要不在客户端使用 VBScript,就无需考虑浏览器的支持问题。Pages:ASP 返回标准的 HTML 页面,可以正常地在常用的浏览器中显示。浏览者查看页面源文件时,看到的是 ASP 生成的 HTML 代码,而不是 ASP 程序代码,这样就可以防止别人抄袭程序。目前有如下三种常用的 ASP 运行环境:Windows NT Server4.0+IIS3.0 及以上版本。Windows NT Workstation4.0+Peer Web Services 3.
36、0 及以上版本。Windows 95/98+PWS(Personal Web Server) 。其中以 Windows NT Server 上的 IIS 功能最强,提供了对 ASP 的全面支持,是创建高速、稳定的 B/S 模式应用的最佳选择。(二) ASP 的工作方式B/S 模式的技术实现包含两个方面:前端浏览器与 Web Server 的交互。Web Server 对数据库的访问。(1)Web Server 与客户端浏览器的交互在本教程的第二章中,我们曾简单介绍了用于网页编制的超文本标识语言(HTML) ,但用 HTML 编制的 Web 应用,其交互性较差,ASP 弥补了标准 HTML 的这
37、一不足。图 3-20 是 ASP 响应浏览器的工作模式。75当浏览器向 Web 服务器提出对 ASP 文件(扩展名为 asp)的访问请求时(在浏览器的地址栏内键入该 ASP 文件的 URL 或通过 HTML 文件中的某个超级链接指定),一个 ASP 脚本就开始执行,这时 Web 服务器调用 ASP,把该文件全部读入并执行每一条命令,然后将结果以 HTML 的页面形式送回浏览器。(2)WebServer 对数据库的访问在 ASP 中,用来存取数据库的对象统称为 ADO 对象(Active Data Objects) ,主要有三种:Connection、Recordset 和 Command,其中
38、Connection 负责打开或连接数据库,Recordset 负责存取数据表,Command 负责对数据库执行动态查询(Action Query)命令和执行数据库的存贮过程(Stored Procedure) 。只依靠上述三个对象还是无法存取数据库的,还必须具有数据库存取的驱动程序:OLE DB(对象链接嵌入数据库)驱动程序和 ODBC 驱动程序。应用程序通过 ADO 对象及数据库存取的驱动对数据库进行存取(图 3-21) 。二、 用 ASP 实现与前端浏览器的交互假定 WebServer 的 IP 地址为 192.168.63.30,在 WebServer 上建立一个虚拟目录 AspDem
39、o,将文件 welcome.htm 和 welcome.asp 放在该目录下(文件内ADO对象应用程序DBF 驱动程序SQL Server 驱动程序Oracle 驱动程序DBF 数据库SQL Server 数据库Oracle 数据库WebServer(ASP) DB Server浏览器图 3-21 ASP 访问数据库示意图图 3-20 ASP 响应客户端(浏览器)工作示意图对 ASP 文件的访问请求以 HTML 形式返回客户端(浏览器)ASP 引擎执行 ASP 脚本生成 HTML 代码Web服务器76容分别见表 3-3 和表 3-4,为下文描述方便,在代码前加注行号,行号并非文件内容) 。本例
40、描述的是 ASP 如何根据用户输入的不同信息而应答不同的页面内容,从这里我们可以了解 ASP 响应 Client 的一种常用技术,并体会 ASP 代码是如何同 HTML 完美结合在一起的。表 3-3 welcome.htm 文件内容行 HTML 代码 注解1 2 3 欢迎来到 ASP 世界 HTML 页面标题栏4 5 6 定义表单7 8 9 您的名字:10定义文本输入框11121314您的性别:15男 定义单选钮16女1718192021定义 sumbit(提交)按钮22(图 3-22 中“进入”按钮)232425表 3-4 welcome.asp 文件内容行 HTML 代码 注解771 2
41、3 本页 HTML 代码是由 ASP 程序产生的 HTML 标题栏4 5 6 “) 根据表单内容18Response.Write (sName + sSex + “:“) 生成相应的 HTML19Response.Write (“)20Response.Write (“ 欢迎来到 ASP 世界,你将体验到一种 “)21Response.Write (“前所未有的交互式 B/S 模式应用的实现技术!“)22Response.Write (“)23Else24sErrMsg=“输入错误:“ + _ 表单内容有误时25“您未输入“ 生成错误信息26If nErrFlag mod 2 =1 then
42、sErrMsg = sErrMsg + “姓名“27If nErrFlag /2 =1 then sErrMsg = sErrMsg + “性别“28Response.Write(sErrMsg) 显示错误信息29Response.Write(“ “) 允许用户重新输入30Response.Write(“ 重新输入 “)31End If32%78当在浏览器地址栏里输入 http:/192.168.63.30/aspdemo/welcome.htm 时,屏幕显示如图 3-26。 当用户输入相应的姓名和性别后,点击“进入”按钮,浏览器将显示图 3-23 所示信息。若用户输入有误,则屏幕显示如图 3
43、-24 所示:图 3-22 welcome.htm 页面效果图 3-24 welcome.asp 页面效果(二)图 3-23 welcome.asp 页面效果(一)79这表明 WebServer 不但能接受客户端浏览器的输入,还能根据用户的输入信息生成不同的 HTML 代码返回给浏览器,也就是说 ASP 和 HTML 的结合使 B/S 模式应用的交互性、流程可控制性大大增强。说明: welcome.htm 的运行在 welcome.htm 文件的第 0 行定义了一个表单:选项 action 指定了一个 URL,用户在表单中输入的信息将发送至该 URL,本例中信息由同目录下的 welcome.a
44、sp 文件接收。 选项 method 标明信息到 action 指定 URL 文件的传送方式,有两种选择:“GET”和“POST” 。本例中用 POST 方法,它表明在 ASP 中用 Request 组件提取表单信息。在 HTML 中,可用来定义六种不同的输入方式:text、password、radio、checkbox、reset 和 submit。本例中用到其中三种,其中 text 输入框(第 0 行)允许用户输入单行文本,radio 提供多个单选钮供用户选择(第 0、0 行) ,submit 表象为一个按钮(第 0 行) ,若用户按此按钮,表单将发送给指定的 URL。在本例中,当用户输入
45、完成后按“进入”按钮,表单将发送给welcome.asp。WebServer 发现它的后缀为.asp,于是就将这个文件交给专门的ASP 处理程序,这个程序扫描 welcome.asp,把其中用和括起来的代码解释并执行,最后把执行结果再传回给 WebServer,WebServer 再把结果通过HTTP 协议传回到前端浏览器。welcome.asp 的运行ASP 提供了六个内建对象,供用户直接调用,本例中用到两个,其中Request 对象从客户端取得信息传递给 WebServer,是 ASP 读取用户输入的主要方法;Response 对象将 WebServer 输出内容发送到用户端。80Requ
46、est 对象提供 QueryString、Form、Cookies、ClientCertificate 和ServerVariables 共五个集合用于支持 ASP 程序收集客户端的信息,其中 Form用于处理、收集客户提交的表单中所包括的数据。在本例 welcome.asp 文件中,第 0、0、0、0 行用该集合取出来自表单的数据并赋值给相应的变量,其中括号内为数据的名称,它与 welcome.htm 中定义输入的语句中 name 选项对应。比如,在 welcome.htm 中第 15 、16 行定义的单选钮名为“sex” ,用户在此的输入则由 welcome.asp 中第 12 、15 行
47、读取。比如 welcome.asp 中第 12 、15 行读取的数据来自用户在 welcome.htm 页面中由第 15 、16 行定义的单选钮输入。Response 对象是 ASP 内建对象中直接对客户端发送数据的对象,动态生成返回页面就是通过该对象实现的。本例中用到其最简单但也是最常用的方法Write,它可将需要发送给客户端的数据写入到 HTML 页面中。文件 welcome.asp 中第 11-24 行生成了返回前端浏览器的 部分,可以用浏览器的“查看源代码”功能查看(图 3-25) ,文件中并没有发现和标记,因为它们已经在服务器端被处理掉了,浏览器所获得的仅仅是结果,是一些标准的 HT
48、ML,这些 HTML 一部分是文件中现成的,一部分是由和标记的代码中的 ASP 内建对象 Response 的 Write 方法写入的。从上述可以看出,ASP 以 HTML 为基础,主体还是 HTML 代码,只是在需要动态响应的部分加入 ASP 代码,ASP 的最终显示结果也是 HTML 代码。三、 通过 ASP 实现对数据库的访问用 ASP 访问 Web 数据库时,必须使用 ADO 组件,ADO 是 ASP 内置的 ActiveX服务器组件(ActiveX Server Component) ,通过在 Web 服务器上建立并设置图 3-25 从浏览器看到的 welcome.asp 源文件的内
49、容81ODBC 和 OLE DB 可连接多种数据库(如 SyBase、Oracle、Informix、SQL Server、Access、VFP 等) 。在 ASP 中,使用 ADO 组件访问远程数据库服务器,可通过以下步骤进行:Step1 在 WebServer 上定义 ODBC 数据源 DSN。Step2 创建数据库连接并打开数据库。Step3 执行指定的 SQL 命令并暂存结果。Step4 关闭数据库连接,释放有关资源。仍以本章第五节中员工信息查询应用为例,下面我们将用 ASP 在 B/S 模式中实现。这里假定在 WebServer 上已创建了 ODBC 的数据源(DSN)orasvr。程序文件 adodemo.asp(程序代码见表 3-5)存放在 WebServer 的虚拟目录AspDemo 下。表 3-5 adodemo.asp 文件内容行 HTML 代码 注解1 1000 and sex=M“8 Set r = Server.CreateObject(“ADODB.Recordset“) 建立游标用来暂存数据9 r.open sql,conn 打开游标10 Response.write “11 Response.wri