資源描述:
《cgi程序調(diào)用示例》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、CGI程序調(diào)用示例CGI程序調(diào)用示例1.CGI概述CGI(CommonGatewayInterface:公用網(wǎng)關(guān)接口)規(guī)定了Web服務(wù)器調(diào)用其他可執(zhí)行程序(CGI程序)的接口協(xié)議標準。Web服務(wù)器通過調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互,也就是CGI程序接受Web瀏覽器發(fā)送給Web服務(wù)器的信息,進行處理,將響應(yīng)結(jié)果再回送給Web服務(wù)器及Web瀏覽器。CGI程序一般完成Web網(wǎng)頁中表單(Form)數(shù)據(jù)的處理、數(shù)據(jù)庫查詢和實現(xiàn)與傳統(tǒng)應(yīng)用系統(tǒng)的集成等工作。CGI程序可以用任何程序設(shè)計語言編寫,如Shell腳本語言、Perl、Fortran、Pascal、C
2、語言等。但是用C語言編寫的CGI程序具有執(zhí)行速度快、安全性高(因為C語言程序是編譯執(zhí)行且不可被修改)等特點。CGI接口標準包括標準輸入、環(huán)境變量、標準輸出三部分。?標準輸入 CGI程序像其他可執(zhí)行程序一樣,可通過標準輸入(stdin)從Web服務(wù)器得到輸入信息,如Form中的數(shù)據(jù),這就是所謂的向CGI程序傳遞數(shù)據(jù)的Get方法或者POST方法。這意味著在操作系統(tǒng)命令行狀態(tài)可執(zhí)行CGI程序,對CGI程序進行調(diào)試。?環(huán)境變量操作系統(tǒng)提供了許多環(huán)境變量,它們定義了程序的執(zhí)行環(huán)境,應(yīng)用程序可以存取它們。Web服務(wù)器和CGI接口又另外設(shè)置了自己的一些環(huán)境變量,用
3、來向CGI程序傳遞一些重要的參數(shù)。CGI的GET方法還通過環(huán)境變量QUERY-STRING向CGI程序傳遞Form中的數(shù)據(jù)。?標準輸出 CGI程序通過標準輸出(stdout)將輸出信息傳送給Web服務(wù)器。傳送給Web服務(wù)器的信息可以用各種格式,通常是以純文本或者HTML文本的形式,這樣我們就可以在命令行狀態(tài)調(diào)試CGI程序,并且得到它們的輸出。2.CGI程序調(diào)用過程CGI程序調(diào)用示例Web瀏覽器Web服務(wù)器CGI程序http協(xié)議,通過Get或post傳遞參數(shù)通過環(huán)境變量獲取瀏覽器參數(shù),業(yè)務(wù)邏輯運算后返回瀏覽器圖1CGI調(diào)用示意圖?Web瀏覽器:web瀏
4、覽器是與用戶進行交互的界面,直接使用html語言中的form表單提交數(shù)據(jù),可以使用get方法或者post方面進行參數(shù)傳遞,后面將給出get方法調(diào)用的例子。?Web服務(wù)器:web服務(wù)器解析瀏覽器提交的URL中的文件信息,根據(jù)URL地址信息找到對應(yīng)的CGI程序。Web服務(wù)器可以是iis或者tomcat等,也可以直接編寫一個簡單的web服務(wù)器,簡單處理瀏覽器提交的業(yè)務(wù)交互。(經(jīng)了解,公司的業(yè)務(wù)監(jiān)控系統(tǒng)是自主開發(fā)的web服務(wù)器,未使用主流的web服務(wù)器。)?CGI程序:CGI程序即一般的可執(zhí)行程序,它通過操作系統(tǒng)或者web服務(wù)器本身的環(huán)境變量獲取瀏覽器提交的業(yè)
5、務(wù)參數(shù),進行邏輯運算,運算后的結(jié)果在通過標準輸出的方法,直接通過web服務(wù)器返回到瀏覽器展示給用戶。例如C語言中的標準輸入就是printf方法。2.CGI程序示例為展示CGI程序調(diào)用的完成過程,本文演示一個瀏覽器調(diào)用c編寫CGI程序的調(diào)用過程,實現(xiàn)的功能很簡單,就是把表單中輸入的數(shù)值乘起來,然后輸出結(jié)果,具體過程如下:?演示過程:CGI程序調(diào)用示例用戶在瀏覽器輸入兩個數(shù)字,CGI程序根據(jù)用戶輸入的數(shù)值自動完成乘法運算并返回到界面的完整過程。?瀏覽器代碼:圖2瀏覽器腳本以上是瀏覽器運行的html腳本,其中form表單中Action屬性已經(jīng)指定了要調(diào)用的c
6、gi程序。瀏覽器運行的效果圖如下:圖3瀏覽器執(zhí)行效果圖以上是瀏覽器執(zhí)行的效果圖,在圖中已經(jīng)指定了兩個參數(shù)3和5.?CGI程序CGI程序調(diào)用示例圖4CGI代碼以上CGI可執(zhí)行程序,它是由C編寫并調(diào)試好后生成exe可執(zhí)行文件,并更改為cgi結(jié)尾的文件放置到web服務(wù)器指定的服務(wù)目錄下,通過圖4代碼,CGI程序使用環(huán)境變量getenv獲取瀏覽器傳遞過來的參數(shù),然后對參數(shù)進行參數(shù)校驗,最后通過標準輸出語句printf通過web服務(wù)器傳遞到瀏覽器。Web服務(wù)器在此處的過程是解析URL調(diào)用正確的CGI程序,然后向指定的客戶機瀏覽器返回輸出結(jié)果。CGI執(zhí)行完生成如下
7、的腳本:圖5CGI向瀏覽器輸入的結(jié)果?執(zhí)行結(jié)果用戶在瀏覽器點擊確定后,CGI程序執(zhí)行完相應(yīng)代碼并生成html語言的腳本經(jīng)由web服務(wù)器傳遞到客戶瀏覽器,其效果如下圖:CGI程序調(diào)用示例