精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>网络专区>>● Internet>>
相关软件
>>网页相关>>Web数据库技术系列

主题:Web数据库技术系列
发信人: 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接口程序
CGI32BAS,它提供了一些CGI接口数,如“send”等。该CGI32BAS接口程序可以通
过网络找到,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数据库编程框架图
    其中,CGI32BAS模块中包含一个Main()函数和其他CGI接口函数。CGI数据库应用
程序模块中包含一个CGI-Main()和数据库管理函数,CGI-Main()函数为CGI数据库管
理程序的主函数,在其中可以调用CGI32BAS中的接口函数,对网络共享数据库进行管
理操作。
(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]

[关闭][返回]