用Delphi编写CGI程序(一)
2006-02-04 13:31:05 来源:WEB开发网核心提示:1.0 、 CGI 程 序 的 功 能: 首 先, 什 么 是 公 共 网 关 接 口( CGI ) 呢? CGI 是 一 个 用 于 定 义 WEB 服 务 器 与 外 部 程 序 之 间 通 信 方 式 的 标 准,用Delphi编写CGI程序(一), 使 得 外 部 程 序 能 生 成 HTML 、 图 象
1.0 、 CGI 程 序 的 功 能:
首 先, 什 么 是 公 共 网 关 接 口( CGI ) 呢? CGI 是 一 个 用 于 定 义 WEB 服 务 器 与 外 部 程 序 之 间 通 信 方 式 的 标 准, 使 得 外 部 程 序 能 生 成 HTML 、 图 象 或 者 其 他 内 容, 而 服 务 器 处 理 的 方 式 与 那 些 非 外 部 程 序 生 成 的 HTML 、 图 象 或 者 其 他 内 容 的 处 理 方 式 是 相 同 的。 因 此, CGI 程 序 不 仅 使 你 能 生 成 静 态 内 容, 而 且 能 生 成 动 态 内 容。 使 用 CGI 的 原 因 在 于 它 是 一 个 定 义 良 好 并 被 广 泛 支 持 的 标 准。 虽 然, java 、 ActiveX 等 可 以 完 成 CGI 程 序 的 功 能, 但 并 不 是 所 有 浏 览 器 都 支 持 它 们。 相 反, 所 有 浏 览 器 都 支 持 CGI , 如: Lynx 、 IE 、 Netscape 等。
然 而, 和 其 他 技 术 一 样, CGI 也 有 它 的 局 限 性。 本 节 我 就 讲 述 CGI 程 序 的 功 能、 优 点 与 不 足。
1.1 、 CGI 功 能
有 许 多 任 务, CGI 是 最 佳 的 是 唯 一 的 选 择, 这 些 任 务 可 分 为 三 类: 初 级 任 务、 中 级 任 务 和 高 级 任 务。 初 级 任 务 是 一 些 不 用 怎 么 编 程 的 任 务, 如:
文 本 型 计 数 器
生 成 简 单 的 HTML 的 程 序
少 于 50 行 用 Perl 语 言、 Shell 脚 本、 C 语 言 或 C++ 语 言 编 写 的 程 序
这 样 的 任 务 用 CGI 来 写 至 少 有 三 点 好 处: 第 一、 CGI 运 行 最 快, 而 Java 等 开 销 太 大; 第 二、 CGI 标 准 于 当 前 浏 览 器 最 兼 容, 这 一 点 在 前 面 已 经 提 到; 第 三、 CGI 资 源 丰 富, 您 在 Internet 上 可 以 找 到 成 千 上 万 的 CGI 代 码。
中 级 任 务 是 包 括 图 象 映 象 和 其 他 一 些 稍 复 杂 的 程 序 设 计 任 务。 在 中 级 任 务 中, 用 CGI 和 Java 来 编 写 程 序 的 难 易 程 度 差 别 不 大。
此 类 任 务 包 括:
图 象 映 象
生 成 整 页 的 HTML 的 CGI 脚 本
动 画
很 有 特 点 的 是, 对 于 高 级 任 务, 用 CGI 比 用 Java 编 程 要 简 单 得 多。 此 类 任 务 有:
后 端 数 据 库 操 作
搜 索 引 擎
多 重 动 态 页 面
其 中, 后 端 数 据 库 操 作( 存 取 数 据 库 的 应 用 程 序) 体 现 了 CGI 的 优 越 性。 CGI 有 一 定 的 历 史, 其 中 很 多 有 用 的 功 能 都 在 CGI 的 库 中 由 别 人 做 好 了; 同 时, 许 多 大 公 司 提 供 了 用 CGI 作好的源代码。 Java 是 一 种 程 序 设 计 语 言, 而 CGI 是 网 关 程 序 的 功 能 规 范。 如 果 Java 有 较 大 改 变, 您 得 重 写 整 个 程 序; 而 CGI 有 较 大 变 化 的, 您 只 要 升 级 CGI 库 程 序 即 可。
然 而, CGI 在 有 些 方 面 还 是 有 局 限 性 的。
1.2 、 CGI 的 局 限 性
在 图 象 映 象 和 动 画 方 面, CGI 程 序 不 如 Java 程 序 开 发 方 便。 现 在 Java 越 来 越 流 行, CGI 程 序 则 越 来 越 适 合 编 写 简 短 杂 乱 的 程 序 和 数 据 库 应 用 程 序。
1.3 、 CGI 程 序 功 能
CGI 程 序 的 最 大 特 点 是 可 以 用 任 何 一 种 语 言 编 制, 可 运 行 在 任 何 一 种 平 台 上, 只 要 它 符 合 CGI 的 规 范 即 可。 下 表 是 一 个 比 较:
任 务 CGI+HTML HTML
处 理 表 单 Yes No
创 建 WEB 页 面 上 非 静 态 内 容 Yes No
处 理 图 象 映 象 文 件 Yes Yes
在 WEB 页 面 和 文 档 中 搜 索 Yes No
创 建 表 单 Yes Yes
创 建 平 台 无 关 的 文 档 Yes Yes
创 建 聊 天 室 等 交 互 应 用 程 序 Yes No
页 面 动 态 生 成 Yes No
按 用 户 需 要 进 行 页 面 文 档 裁 剪 Yes No
下 面, 我 们 用 一 系 列“ Hello World ” 程 序 结 束 本 讲:
Perl :
Require "cgi-lib.pl";
PRint &PrintHeader;
print " ";
print "Hello World ";
print &PrintEnv;
exit;
此 文 件 存 储 在 C:HTTPDCGI-BIN 目 录 下, 文 件 名 为 2_1.pl 。 在 浏 览 器 中 用 地 址 http://localhost/cgi-bin/2_1.pl 调 用。 注 意, 此 时 OmniHTTPD 应 在 运 行。 如 果 一 切 正 常, 您 可 以 在 浏 览 器 中 看 见“ Hello World ” 和 环 境 变 量。
C : #include
#include "html-lib.h"
#include "cgi-lib.h"
int main()
{
html_header();
html_begin("Test CGI");
h1("CGI Program");
printf(" ");
h2("CGI Environment Variables");
print_cgi_env();
html_end();
return 0; }
编 译 后 将 可 执 行 文 件 复 制 到 C:HTTPDCGI-BIN 下, 改 名 为 2_1.cgi , 用 地 址 http://localhost/cgi-bin/2_1.cgi 调 用。
首 先, 什 么 是 公 共 网 关 接 口( CGI ) 呢? CGI 是 一 个 用 于 定 义 WEB 服 务 器 与 外 部 程 序 之 间 通 信 方 式 的 标 准, 使 得 外 部 程 序 能 生 成 HTML 、 图 象 或 者 其 他 内 容, 而 服 务 器 处 理 的 方 式 与 那 些 非 外 部 程 序 生 成 的 HTML 、 图 象 或 者 其 他 内 容 的 处 理 方 式 是 相 同 的。 因 此, CGI 程 序 不 仅 使 你 能 生 成 静 态 内 容, 而 且 能 生 成 动 态 内 容。 使 用 CGI 的 原 因 在 于 它 是 一 个 定 义 良 好 并 被 广 泛 支 持 的 标 准。 虽 然, java 、 ActiveX 等 可 以 完 成 CGI 程 序 的 功 能, 但 并 不 是 所 有 浏 览 器 都 支 持 它 们。 相 反, 所 有 浏 览 器 都 支 持 CGI , 如: Lynx 、 IE 、 Netscape 等。
然 而, 和 其 他 技 术 一 样, CGI 也 有 它 的 局 限 性。 本 节 我 就 讲 述 CGI 程 序 的 功 能、 优 点 与 不 足。
1.1 、 CGI 功 能
有 许 多 任 务, CGI 是 最 佳 的 是 唯 一 的 选 择, 这 些 任 务 可 分 为 三 类: 初 级 任 务、 中 级 任 务 和 高 级 任 务。 初 级 任 务 是 一 些 不 用 怎 么 编 程 的 任 务, 如:
文 本 型 计 数 器
生 成 简 单 的 HTML 的 程 序
少 于 50 行 用 Perl 语 言、 Shell 脚 本、 C 语 言 或 C++ 语 言 编 写 的 程 序
这 样 的 任 务 用 CGI 来 写 至 少 有 三 点 好 处: 第 一、 CGI 运 行 最 快, 而 Java 等 开 销 太 大; 第 二、 CGI 标 准 于 当 前 浏 览 器 最 兼 容, 这 一 点 在 前 面 已 经 提 到; 第 三、 CGI 资 源 丰 富, 您 在 Internet 上 可 以 找 到 成 千 上 万 的 CGI 代 码。
中 级 任 务 是 包 括 图 象 映 象 和 其 他 一 些 稍 复 杂 的 程 序 设 计 任 务。 在 中 级 任 务 中, 用 CGI 和 Java 来 编 写 程 序 的 难 易 程 度 差 别 不 大。
此 类 任 务 包 括:
图 象 映 象
生 成 整 页 的 HTML 的 CGI 脚 本
动 画
很 有 特 点 的 是, 对 于 高 级 任 务, 用 CGI 比 用 Java 编 程 要 简 单 得 多。 此 类 任 务 有:
后 端 数 据 库 操 作
搜 索 引 擎
多 重 动 态 页 面
其 中, 后 端 数 据 库 操 作( 存 取 数 据 库 的 应 用 程 序) 体 现 了 CGI 的 优 越 性。 CGI 有 一 定 的 历 史, 其 中 很 多 有 用 的 功 能 都 在 CGI 的 库 中 由 别 人 做 好 了; 同 时, 许 多 大 公 司 提 供 了 用 CGI 作好的源代码。 Java 是 一 种 程 序 设 计 语 言, 而 CGI 是 网 关 程 序 的 功 能 规 范。 如 果 Java 有 较 大 改 变, 您 得 重 写 整 个 程 序; 而 CGI 有 较 大 变 化 的, 您 只 要 升 级 CGI 库 程 序 即 可。
然 而, CGI 在 有 些 方 面 还 是 有 局 限 性 的。
1.2 、 CGI 的 局 限 性
在 图 象 映 象 和 动 画 方 面, CGI 程 序 不 如 Java 程 序 开 发 方 便。 现 在 Java 越 来 越 流 行, CGI 程 序 则 越 来 越 适 合 编 写 简 短 杂 乱 的 程 序 和 数 据 库 应 用 程 序。
1.3 、 CGI 程 序 功 能
CGI 程 序 的 最 大 特 点 是 可 以 用 任 何 一 种 语 言 编 制, 可 运 行 在 任 何 一 种 平 台 上, 只 要 它 符 合 CGI 的 规 范 即 可。 下 表 是 一 个 比 较:
任 务 CGI+HTML HTML
处 理 表 单 Yes No
创 建 WEB 页 面 上 非 静 态 内 容 Yes No
处 理 图 象 映 象 文 件 Yes Yes
在 WEB 页 面 和 文 档 中 搜 索 Yes No
创 建 表 单 Yes Yes
创 建 平 台 无 关 的 文 档 Yes Yes
创 建 聊 天 室 等 交 互 应 用 程 序 Yes No
页 面 动 态 生 成 Yes No
按 用 户 需 要 进 行 页 面 文 档 裁 剪 Yes No
下 面, 我 们 用 一 系 列“ Hello World ” 程 序 结 束 本 讲:
Perl :
Require "cgi-lib.pl";
PRint &PrintHeader;
print " ";
print "Hello World ";
print &PrintEnv;
exit;
此 文 件 存 储 在 C:HTTPDCGI-BIN 目 录 下, 文 件 名 为 2_1.pl 。 在 浏 览 器 中 用 地 址 http://localhost/cgi-bin/2_1.pl 调 用。 注 意, 此 时 OmniHTTPD 应 在 运 行。 如 果 一 切 正 常, 您 可 以 在 浏 览 器 中 看 见“ Hello World ” 和 环 境 变 量。
C : #include
#include "html-lib.h"
#include "cgi-lib.h"
int main()
{
html_header();
html_begin("Test CGI");
h1("CGI Program");
printf(" ");
h2("CGI Environment Variables");
print_cgi_env();
html_end();
return 0; }
编 译 后 将 可 执 行 文 件 复 制 到 C:HTTPDCGI-BIN 下, 改 名 为 2_1.cgi , 用 地 址 http://localhost/cgi-bin/2_1.cgi 调 用。
[]
- ››编写Linux系统下Daemon程序的方法步骤
- ››Delphi之多线程实例
- ››Delphi SelectSingleNode的使用 根据节点属性获取...
- ››Delphi接口详述
- ››delphi 远程调试
- ››Delphi与DirectX之DelphiX(34): TDIB.Lightness()...
- ››Delphi Application.MessageBox详解
- ››Delphi只能运行一个程序实例的两种方法
- ››编写组件,使用JavaScript更新UpdatePanel
- ››编写多文档应用程序
- ››编写自定义的 Android Preference 组件
- ››编写高效的Android代码
更多精彩
赞助商链接