发信人: williamlong()
整理人: snowypeng(2002-05-23 09:25:18), 站内信件
|
一、Web服务器、浏览器与CGI接口 随着Web网络的迅速发展,网络数据库服务成为其核心服务之一,本文主要介绍组 建一个Web网络数据库服务系统所需要的技术支持。 组建一个Web网络数据库服务系统,网络上需要一个Web服务器、客户浏览器和通用 网关接口CGI(Common Gateway Interface)应用程序。 1.Web服务器 目前比较流行的Web服务器主要有:Website Server、Microsoft IIS、ExpressO HTTP Server、thttpd、Netscape Enterprise Server等。 Web服务器负责监听并应答Web客户浏览器发出的请求。Web服务器监听由Web浏览器URL 定位发出的服务请求,然后服务器依据接收到的服务请求信息映射执行CGI接口程序, 当CGI完成请求任务后,把执行结果提交给Web服务器,最后由Web服务器将结果传递给 Web客户浏览器,并在客户浏览器上显示出来。 2.客户浏览器 目前常用的客户浏览器工具主要有:Netscape、Explorer、Mosaic、Lynx等。 客户浏览器主要负责将用户的服务请求信息提交给Web服务器,同时负责Web服务器传递 过来的结果的客户端显示。客户浏览器用HTML超文本标记语言的Form表单来完成客户服 务请求信息的传递任务,并显示服务请求的结果。 3.通用网关接口CGI CGI接口通常有三种方式:CGI-WIN(Windows CGI)、CGI-BIN(基于Script语言)及 CGI-DOS(DOS CGI)。 Windows CGI接口程序主要是通过Windows CGI标准与Web服务器通信。当Web服务器 接收到客户浏览器的服务请求时,服务器将客户请求信息数据发送到相应的映射 Windows CGI接口程序,CGI-WIN程序接收到请求信息数据并执行任务,当完成任务 后,将执行结果提交给Web服务器,再由服务器完成与客户浏览器的通信。CGI-BIN和 CGI-DOS接口原理与此相同。 对于Web数据库服务,CGI接口则相当于作为RDMS系统,管理各项数据库服务请求, 其中包括一些查询、修改、追加、删除等服务。CGI接口程序则必须完成RDMS的管理任 务。 CGI数据库管理接口程序常用编程工具有Visual Basic、Shell Script、Perl以及 C/C++等。其中Visual Basic环境具备较强的数据库SQL技术支持,特别在Windows CGI标准下较为方便,能有效缩短系统开发周期。 4.三者之间的相互关系图表 如上图所示,客户浏览器向Web服务器提出服务请求并显示服务器传递过来的服务 结果。Web服务器则是信息交换中心,将客户请求正确映射传递给CGI接口程序,待CGI 完成服务任务之后,再将执行结果传递给客户浏览器。CGI接口程序负责完成Web服务器 传递过来的客户的服务请求,对于Web数据库服务请求,则CGI接口程序起着RDMS数据库 管理系统的作用,完成客户的数据库服务请求。
二、Web服务器 常见Web服务器(Web Server)有:Website Server、Microsoft IIS和Netscape Enterprise Server等。本文主要介绍完全支持Windows CGI标准的Website Server服务 器。 Website服务器是一个32位、多线程的服务器,它是基于Windows 95平台或Windows NT平台运行的。 由于本文是针对Web数据库资源共享访问服务进行探讨,因此主要介绍与Windows通用网 关接口CGI、Netscape浏览器有关的Website服务器技术支持和特点。 1.URL(Uniform Resourse Locator,统一资源定位器)定位 URL是一个文字字符串,它唯一表示了资源信息的所在地点,也即定义了文档的地 址,其语法格式如下: protocol://host[:port]/absolute-path,例如:HTTP://www.edu.nudt.cn/htdocs; 其中protocol(HTTP)定义了存取文档的通信协议,host(www.edu.nudt.cn或者 202.197.0.180)定义了一个合法的IP地址,port表示服务器在该协议端口监听客户机的 服务请求,absolute-path(/htdocs/)指明了主机服务器上请求文档的地点。 通常,大部分Web服务器都是设计成把absolute-path认为是指向文件的一个路 径,该文件中包含请求的信息资源。这个缺省约定可以更改,只要在服务器配置时,把 全部URL或部分URL映射到一个不同的地点即可。 2.映射支持 Website服务器可以通过映射支持方便地管理文档、扩展服务器的资源定位管理功 能: (1)CGI映射 Website服务器允许三种类型的CGI映射:Windows、标准和DOS。这些CGI映射能把 一个URL路径映射到CGI目录上去。当服务器碰到一个包含CGI映射的URL时,CGI目录下 包含的通用网关接口CGI程序将被服务器执行,而对于Web数据库服务,则该CGI程序就 是数据库管理系统DBMS或者关系数据库管理系统RDMS的应用程序,其中包括在给定的权 限内执行对数据库资源的查询、输入、修改和删除管理,实现网络数据库资源的共享。 Web客户通过客户浏览器的Form表单提出网络数据库服务请求,与Web服务器通信, 其中在Form表单中包含了欲映射到的CGI映射路径下的数据库管理程序,从而准确地完 成用户的数据库资源的服务请求。 为了区别可执行程序和一般文档文件,服务器要求这些程序必须在它们各自的目录 下,缺省情况下,为三种不同的可执行程序分配如下的工作子目录: 1) CGI-WIN Windows程序,分配URL路径/cgi-win/。 2) CGI-BIN基于Script语言的程序,分配URL路径/cgi-bin/和/cgi-shi。 3) CGI-DOS DOS程序,分配URL路径/cgi-dos/。 (2)文档映射 把URL映射到一个本机物理目录上。一个URL定义了一个文件或信息资源的逻辑Web 地址。 (3)内容映射 内容映射把一个文件的扩展名与一个内容类型联系起来,内容类型对文档进行分 类,可以用标准MIME(Multipurpose Internet Mail Extension)来描述文档。Web浏览 器可以对MIME格式的文档进行适当的显示。 内容映射的作用是当一个Web客户从Website Server请求一个文档时,服务器不但 发送文档文件而且传送该文档的内容类型。服务器根据文档文件的扩展名可以判定内容 类型和内容类型映射,而客户可以根据服务器提供的内容类型对文档进行适当的显示。 (4)重指映射 可以把一个URL重新分配给另外的URL。当Website服务器接收到一个对重指URL的请 求时,它告诉浏览器连接到那个新的URL上去。 3. HTTP请求 一个HTTP请求是从客户机发往服务器的,它可以是一个简单的信息,也可以是一个 完整的请求,如: Method URL-AbsolutePath ProtocolVersion NL[Header][NL Date] Method指明了发送到服务器的请求类型,URL-AbsolutePath指明了请求的信息资源的 地点,ProtocolVersion使服务器能够知道怎样去处理这个要求。 目前大部分HTTP服务器支持的Method有三种: (1)GET方法 如果URL-AbsolutePath所指向的是一个可执行程序,GET方法就从服务器上等待 CGI程序运行完后,CGI程序返回给服务器的结果信息。 (2)HEAD方法 HEAD方法与GET方法相同,只是服务器只返回头信息,实际的文档并不传送。HEAD 方法适用于客户机检测信息资源的有效性和可行性。 (3)POST方法 POST方法用于客户机向服务器提供数据,这些数据一般由被请求的文档所使用,对 于Web数据库服务,则被请求的文档即负责数据库管理的可执行CGI应用程序。 4.文档保护ACCESS Website服务器可以提供以下几个方面控制、存取Web站点的任一个部分,从而有效 地保护文档安全: (1)通过用户; (2)通过用户组; (3)通过Web客户IP地址; (4)通过Web客户名称; (5)上述几个部分的任意组合。 对以上的几个方面可以增加存取控制,提供帐户登录管理,从而禁止非法用户对文 档进行操作,有效地保护服务器的文档和数据库资源。
三、Web CGI编程 通用网关CGI(Common Gateway Interface)编程是Web数据库服务的核心部分,CGI 接口程序负责执行Web服务器传递过来的Web客户浏览器的服务请求,CGI程序相当于系 统的关系数据库管理系统RDMS,它在服务器给网络客户设定的操作权限内完成对共享数 据库资源的查询、输入、添加记录、删除记录等任务,为用户提供网络资源服务。然 后,当CGI程序完成数据库操作服务任务后,把所获得的服务结果又传递给Web服务器, 再由Web服务器把服务结果信息传递给Web客户浏览器,在浏览器上显示出服务的结果信 息。其中Web客户浏览器是通过发送CGI Form交互式表单数据信息进行服务请求的。 微机上CGI程序通常有三种:DOS、标准和Windows,对应于Web服务器(一般指 Website Server)的三种CGI映射CGI-DOS、CGI-BIN和CGI-WIN,其中CGI-DOS分配 URL路径/cgi-dos/,其目录下存放DOS CGI程序;CGI-BIN分配URL路径/cgi-bin/, 其目录下存放基于Script语言的CGI程序;CGI-WIN分配路径/cgi-win/,其目录下存 放Windows CGI程序。Web服务器依据Web客户浏览器发出的Form交互式表单上的服务请 求信息,在对应的映射目录下找到CGI可执行程序,并执行该程序。 本文主要讨论基于Windows CGI标准的Web CGI编程。服务器指的是Website Server,它完全支持Windows CGI标准。开发Windows CGI程序的常用编程平台有 Visual C++以及Visual Basic。本系列主要介绍在Visual Basic环境下开发Windows CGI程序。 目前在Internet上可以找到一个负责处理CGI变量的Visual Basic接口程序 CGI32BAS,它提供了一些CGI接口数,如“send”等。该CGI32BAS接口程序可以通 过网络找到,E-mail地址为[email protected](作者为Robert B.Denny) ,也可以在一些公用资源服务器上或者一些文献中找到。下面主要介绍其中两个重要接 口函数: (1)Send函数 格式:Send(s As String),功能:把字符写入输出文件中。例如 Send(“<title>Web数据库服务系统”)。 (2)GetSmallField函数 格式:GetSmallField(Key As String),功能:其从Form表单中读取给定的关键字的 值。 下面介绍Windows CGI数据库接口程序: (1)Windows CGI数据库编程框架图 其中,CGI32BAS模块中包含一个Main()函数和其他CGI接口函数。CGI数据库应用 程序模块中包含一个CGI-Main()和数据库管理函数,CGI-Main()函数为CGI数据库管 理程序的主函数,在其中可以调用CGI32BAS中的接口函数,对网络共享数据库进行管 理操作。 (2)Web Windows CGI数据库管理编程 下面用Visual Basic对一个人事关系管理数据库进行CGI编程,本文只介绍按关键 字段查询数据库记录的编程,其他诸如输入、修改和删除等与其类似。 我们假设服务器上有一个人事关系管理数据库(rsgx.mdb),库中包含有几个关系 表。为了简便,这里只对其中一个人事档案表进行查询。假设数据库的人事档案表如 下。 现通过CGI编程按关键字段“姓名”对其进行查询。代码如下所示: Option Explicit Dim sSelector As String Dim db As Database Dim ds As Recordset Dim name0 As String
Sub CGI-MAIN() Dim i As Integer Set db=OpenDatabase(″c:\dbase\rsgx.mdb″) i=1 Send(″Conten-type:text/html″) Send(″″) Send(″<title>人事档案管理:</title>″) Send(″<center><h1>按姓名查询:</h1>″) Set ds=db.OpenRecordset(″Select * from rsgx.[人事档案表]″) Send(″<table border width=90%>″) name0=GetSmallField(″NAME0″)′注解:NAME0为客户浏览器发送的Form中的关键字 变量 ′其中客户浏览器HTML表单Form为:′ ′<FORM METHOD=″POST″ACTION=″/cgi-win/query.exe″>(query.exe为 ′本CGI程序的可执行文件名) ′输入查询姓名:<INPUT TYPE=TEXT NAME=″NAME0″><BR> ′<P><INPUT TYPE=SUBMIT VALUE=″发送″> ′</FORM> Send(″BODY″) While Not ds.EOF If(ds(″姓名″)=name0)Then Send(″<tr><td>″& i& ″</td><td>″&ds(″编号″))&″</td><td>″& ds(″姓名″)&″</td><td>″& ds(″职务″)&″</td><td>″& ds (″学历″)& ″(年龄)″&″</td><td>″& ds(″政治面貌″)&″</td></tr>″) i=i+1 End If ds.MoveNext Wend Send(″</BODY>″) db.Close End Sub Sub Inter-Main() MsgBox″This is a CGI program for the Web Sever.″,16,″CGI.BAS″ End Sub 其他数据库的管理操作类似于上程序,本文不再讨论。
-- ☆ 来源:.广州网易BBS站 bbs.nease.net.[FROM: AnonymousOrganizatio]
|
|