l.CGI的可移植性和可實現(xiàn)的功能
CGI(Common Gateway Interface,公用網(wǎng)關(guān)接口)技術(shù)是為HTML語言提供的一種擴展手段,允許用戶編寫擴展應(yīng)用程序來擴展服務(wù)器的功能,實現(xiàn)客戶 端與服務(wù)器的交互操作。CG1程序可以在多種平臺上實現(xiàn)一定的功能,并且無需 做太大的更改,就可以輕松地完成平臺之間的移植。任何支持CGI的服務(wù)器與其他專用服務(wù)器的擴展功能相比,主要的一個特點就是CGI程序的服務(wù)器可以用任何語言編寫,在任何平臺上開發(fā),只要它滿足CGI規(guī)范就可以。
由于CGI程序的大部分處理對象是字符串,所以編寫CGI程序的語言最好采用Perl、C/C++語言,其他語言在編寫CGI程序時都存在不足之處,主要是因為它們?nèi)狈梢造`活應(yīng)用的字符串處理函數(shù)。
HTML加上CGI可以實現(xiàn)以下www服務(wù),這些功能是HTML本身無法實現(xiàn)的:
(1) 處理客戶端提交的表單數(shù)據(jù);
(2) 創(chuàng)建Web頁面上大多數(shù)非靜態(tài)的內(nèi)容;
(3) 在Web頁面和文檔中增加搜索功能;
(4) 創(chuàng)建交互應(yīng)用,如聊天室、投票站、計數(shù)器等;
(5) 允許頁面動態(tài)生成、生成用戶定制的頁面等。
2.CGI的基本原理
CGI是一種通用的接口標(biāo)準(zhǔn)。CG1程序就是符合這種通用接口標(biāo)準(zhǔn)的、運行在Web服務(wù)器上的程序、它的工作就是控制瀏覽器的信息要求,產(chǎn)生并傳回瀏覽器所需的文件。
CGI是外部擴展應(yīng)用程序與www服務(wù)器交互的一個標(biāo)準(zhǔn)接口。按照CGI標(biāo)準(zhǔn)編寫的外部 。
擴展應(yīng)用程序可以處理客戶端(www瀏覽器)輸入的 需要協(xié)同工作的數(shù)據(jù),從而完成客戶端與服務(wù)器的交互操作。例如,可以編寫CGI外部擴展程序來訪問外部數(shù)據(jù)庫,客戶端用戶可以通過CGI外部擴展程序和WWW服務(wù)器進行數(shù)據(jù)查詢并得到查詢結(jié)果。
下面通過對瀏覽器提交表單數(shù)據(jù)的處理來了解以下CG1的基本原理。
(1) 當(dāng)客戶端的用戶填寫好表單后,單擊“提交”按鈕向服務(wù)器發(fā)出HTTP請求(稱為CGI請求)、實際上這里的請求將發(fā)往<FORM>標(biāo)記中的ACTION屬性標(biāo)識的URL。
(2) Web服務(wù)器守護進程收到這個請求后,就會建立一個子進程(稱為CGI進程)。該CGI子進程將CGI請求的有關(guān)數(shù)據(jù)設(shè)置成環(huán)境變量,在外部CGI程序與服務(wù)器之間 建立兩條數(shù)據(jù)通道(標(biāo)準(zhǔn)輸入/輸出),然后啟動URL指定的CGI程序,并與該子進程保持同步,以監(jiān)測CGI程序的執(zhí)行狀態(tài)。
(3) 子進程通過標(biāo)準(zhǔn)輸出流將表單處理結(jié)果傳遞給服務(wù)器守護進程,守護進程再將處理結(jié)果作為應(yīng)答消息回送到客戶端并用瀏覽器顯示出來。
用最簡單的話來說,CG1標(biāo)準(zhǔn)就是通過STDIN(標(biāo)準(zhǔn)輸入)或環(huán)境變量來得到服務(wù)器的輸入信息,并通過STDOUT(標(biāo)準(zhǔn)輸出)向服務(wù)器輸出信息。
不過,用C或Perl開發(fā)CGI程序時,網(wǎng)站設(shè)計技術(shù)人員普遍感到難度大、修改復(fù)雜,效率不高。因此人們不斷開發(fā)出一些既容易學(xué)習(xí)掌握,又能實現(xiàn)Web動態(tài)交互功能的新技術(shù),目前發(fā)展得比較成熟的新技術(shù)主要有ASP,PHP和JSP。
本文地址:http://m.cdrpkj.cn//article/2676.html