CGI技术及其开发(一)_第1页
CGI技术及其开发(一)_第2页
CGI技术及其开发(一)_第3页
CGI技术及其开发(一)_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CGI技术及其开发 一 作为Internet 上最主要的信息管理和组织手段 阳W由 系列相应的技术及应用构 成 其 组成技术包括HTTP HTML URL以及CGI 等 WWW服务器本身提供些基本功 能 以 完成客户端的请求和自身的管理 但不同的用户有不同的功能要求 其中许 多功能是WWW 服务器本身不能提供的 比如在线查询等 它必须提供 种扩展手 段 以 允许用户编写扩展应用程序来扩展服务器的功能 CGI CCommonGatewaylnterface 即通 用网关接口 就是这样的种标准扩展技术 下面就CGI 的基本技术及其开发 进行讨 论 CGI 技术 1 1CGI 的提出 CGI 是外部扩展应用程序与WWW服务器交互的个标准接口 按照CGI 标准编写的外 部扩展应用程序可以处理客户端 般是WWW浏览器 输入的协同工作数据 完成 客户端与服务器的交互操作 这在实际应用中非常有用 如可以编写CGI 外部扩展 程序来访问外部数据库 客户端用户可以通过它和WWW服务器来进行数据查询 CGI 般分两种 标准CGI 和缓冲CGI 所有的WWW服务器均应支持标准CGI 按标准 CGI 编写的程序与具体的阳W服务器无关 而按缓冲CGI 编写的程序与WWW服务器有 关 1 2CGI 的工作原理 1 标准CGI 客户端 服务器 CGI 接口与外部程序间的关系可用图1 1表示 如上图所示 服 务器是客户端 如浏览器 与扩展程序之间的通道 当客户端的用户完成了 定 输 入工作 比如填充完HTML文档中的FORM表 之后向服务器发出HTTP请求 称为 CGI 请求 服务器守护进程接收到该请求后 就创建个子进程 称为CGI 进程 该CGI 子进程将CGI 请求的有关数据设置成环境变量 在外部CGI 程序与服务器问建 立两条数据通道 标准 I 川 然后启动URL指定的CGI 程序 并与该子进程保持 同 步 以监测 CGI 程序的执行状态 子进程通过标准输出流将处理结果传递给服务 器 守护进程 守护进程再将处理结果作为应答消息回送到客户端 外部CGI 程序通 过 环境变量 命令行参数 标准输入输出与WWW服务器进行通讯 传递有关参数和 处 理结果 士环境变量 当服务器守护进程创建子进程运行CGI 程序时 设置相应 的 环境变量和命令行参数 以传递客户端和服务器的有关信息给该子进程 士命令 行 参数 命令行参数仅在有HTML文档中有 ISINDEX查询的情况下使用 士标准输入 输 出 当HTTP请求模式采用POST方式时 CGI 程序通过标准输入流和有关环境变 量来 获取客户端传输数据 如采用GET 方式时 CGI 程序直接通过环境变量获取客户 端传 输数据 当 CGI 程序要返回处理结果 一般为HTML文档 给客户端时 它通过标 准 输出流将该结果数据传递给服务器守护进程 2 缓冲 CGI 标准CGI 使用 Stdin Stdout 来进行数据通讯 这是由其最初开发环境 CUnix操作 系统 所决定的 但是许多Windows环境下的编程工具 如VB和De1phi 等 是不 支 持这种 I O方式的 这时就不能用它们来开发基于标准CGI 的应用程序 于是有些 服务器提出了缓冲CGI 的概念 缓冲CGI 亦称为 WinCGI 此时 CGI 扩展程序与服务 器 问通过缓冲 CGI 而不是标准 CGI 进行通讯 而缓冲CGI 与服务器间的通讯还是通 过标 准CGI 接口 后者由WWW服务器的内置缓冲处理程序实现 这几部分的关系 可用图 1 2表示 缓冲CGI 的工作原理与标准CGI相似 不同的是当服务器守护进程接 收 到客户端的 CGI 请求时 所建立的CGI 子进程将 CGI 请求的有关数据设置成环境 变量 外 还将它们保存在输入缓冲区中 通过缓冲处理程序在外部CGI 程序与服 务器问 建立两条数据通道 输入 输出缓冲区 0 CGI 子进程通过输出缓冲区将处理结果 传递给服务器守护进程 此处外部CGI 程序通过环境变量和输入 输出缓冲区与WWW 服务器进行通讯 传递有关参数和处理结果 此处环境变量的意义同上 不过这 些环境变量及其相应值保存在输入缓冲区中 此外 输入缓冲区中还存放客户端 的传输数据 如采用POST模式的话 输出缓冲区用来存放扩展程序的处理结果 3 标准CGI 与缓冲CGI 的区别 对CGI 扩展程序而言 最主要差别在于数据的 I 不同 对缓冲CGI 服务器与CGI 扩展程序间的数据交换是通过缓冲区 而标准CGI 是通过标准 I O 使用缓冲CGI 可 选择更多的开发工具 可以开发Windows95和JWindowsNT下的GUI 扩展程序 而使用 标准CGI所选用的开发工具必须支持标准 I O 只有少数几种WWW服务器支持缓冲 CGI 因此基于它的扩展程序兼容性不如标准CGI好 1 3CGI 与其他WWW技术的关系 CGI 作为WWW服务器的标准扩展技术 由上面CGI 的基本原理可知 它和许多其它的 WWW技术密切相关 如HTTP HTML MIME和URL等 下面主要就它与前两种技术的关 系进行研究 1 CGI 与HTTP协议 CGI 通过HTTP协议在客户端和服务端进行通讯 士客户端用户代理向服务器发送的 请求是HTTP请求消息 该消息中含有处理用户输入的CGI 扩展程序的URL值 士 CGI 扩展程序在处理结束后 返回给客户端的应答是HTTP应答消息 因此CGI 程序的输 出数据必须符合HTTP应答消息的语法格式 这在基于CGI标准的开发中非常重要 2 CGI 与HTML语言 CGI 扩展程序的输出数据 HTTP应答消息 一般有两种 符合MIME类型的文档 最 普遍的是HTML文档 表示为text htm1 指向其它文档的URL链接 这两种方式 都与HTML语言有关 数据的组织须符合HTML语法格式 1 4CGI 开发的几个问题 基于WWW的人机交互一般有两种情况 本地交互和通过网络传输的交互 前者是指 客户端用户的输入数据在客户端本地进行处理 然后将处理结果返回给用户 常 见的开发工具有 avaScript Netscape开发 和VBScript Microsoft 开发 后 者 是指客户端用户输入的数据通过网络传输到WWW服务器 服务器处理结束后将处 理结 果返回给客户端用户 常见的开发技术是WWW服务器扩展技术优DCGI API 等 此 处主要讨论基于标准CGI 技术的通过网络进行数据传输的交互实现 对这种人机 交互 的实现 主要有三个环节需要解决 如何获取客户端传输的数据 如何提取有 效数据并处理这些数据 如何向客户端返回应答 下面分别结合有关技术 谈谈这 三方面问题的解决 1 客户端传输数据的获取 由第三章CGI 的原理可知 当服务端守护进程接收到客户端用户代理 如浏览器 提交的CGI 请求时 所创建的CGI 子进程会设置与CGI 请求内容有关的环境变量 并 建立服务器与外部CGI 程序之间通讯的通道 即标准1 0 0 CGI 程序可以通过环 境 变量 标准 I O或命令行参数获取客户端用户输入的数据 数据的获取与请求所 采 用的HTTP方法 Method 和用户所使用的请求方式有关 用户通过CGI 请求数 据一 般有三种方式 HTMLFORM表 ISINDEX 可点击图片 ISMAP或Imagemaps 后两 种方式是通过命令行参数传递用户的输入数据 在C语言中 下面的举例 亦然 CGI 程序可以用argc和argv int 获得这些参数值 而前一种方式则取 决于HTTP请 求方法 但不管采用何种方法 都将用到环境变量来传递有关请求内 容 获取环境变量 环境变量的类别很多 包含客户端和服务端的详细信息 在一 般CGI 程序开发中 下述几个环境变量在数据传递中起着重要作用 士 GATEWAY INTERFACE CGI 程序所使用的CGI标准接口的版本号 如使用的CGI 1 1版 该变量表示为 CGI 1 1 士 REQUEST METHOD HTTP请求方法 根据该变量值可判断CGI 请求所采用的请求方法 以决定是通过Stdin 还是通过环境变量QUERY STRING获取客户端传输数据 士 QUERY STRING QUERY STRING是CGI 程序URL中 I I 之后的数据 当使用ISINDEX查询或FORM表使 用GET 方法时 客户端传输数据可以通过读取该变量而获得 士 CONTENT LENGTH NTENT LENGTH表示客户端传输数据的字节数 古 CONTENT TYPE NTENT TYPE表示客户端传输数据的数据编码类型 利用 environ int 函数可以获得所有的环境变量及其值 利用getenv constchar 士 函数可以获得指定环境变量的相应值 HTTP请求方法 客户端用户代理提交的CGI 请求是HTTP请求 其中包括HTTP请求方法 HTTP协议定义 的请求方法中常用的主要有GET和POST 客户端FORM表的METHOD属性用来设置请求方法 其缺省值为GET 如果在FORM中使用 GET方法 CGI 程序通过环境变量QUERY STRING获取客户端传输数据 如果在FORM中 使用POST方法 CGI 程序通过通过CONTENT LENGTH获取客户端传输数据的字节数 通过Stdin读取客户端传输数据 2 有效数据的提取和处理 通过上述方式获取的客 户端传输数据的般格式为 name 1 J 二value 1 J val ue i J 表示变量 值 它是用户在FORM表中某输入域中输入的值 客户端传输数据的每对 I Name二Value 串由 PurveyorWebserver 和 Microsoft IIS提供的是ISAPI 利用这些API 编写程序的流程和最后生成的文件类型也不样 比 如用ISAPI 编写程序时必须依照它的特定框架 最后建立的文件可以是EXE文件和DLL 文件 下表 图3 3 列出了CGI SSI 和API 三种技术在主要性能方面的比较 SSI CGI API 实现的灵活性差好好可实现的功能差强大强大对程序员的要求低 般较高 开发与测试时间短 般较长花费低 般较高操作的风险性低低较大移植性 较好较好差 CPU的负载高高较低CGUDAPI 都需要编程实现 利用它们可访问更 多的数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论