程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi編寫CGI程序(一)

用Delphi編寫CGI程序(一)

編輯:Delphi
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 調 用。
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved