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

CGI數據的編碼

編輯:關於JAVA

在這個版本中,我們將收集名字和電子函件地址,並用下述形式將其保存到文件中:
First Last <[email protected]>;
這對任何E-mail程序來說都是一種非常方便的格式。由於只需收集兩個字段,而且CGI為字段中的編碼采用了一種特殊的格式,所以這裡沒有簡便的方法。如果自己動手編制一個原始的HTML頁,並加入下述代碼行,即可正確地理解這一點:

 

<Form method="GET" ACTION="/cgi-bin/Listmgr2.exe">
<P>Name: <INPUT TYPE = "text" NAME = "name" 
VALUE = "" size = "40"></p>
<P>Email Address: <INPUT TYPE = "text" 
NAME = "email" VALUE = "" size = "40"></p>
<p><input type = "submit" name = "submit" > </p>
</Form>


上述代碼創建了兩個數據輸入字段(區),名為name和email。另外還有一個submit(提交)按鈕,用於收集數據,並將其發給CGI程序。Listmgr2.exe是駐留在特殊程序目錄中的一個可執行文件。在我們的Web服務器上,該目錄一般都叫作“cgi-bin”(注釋③)。如果在那個目錄裡找不到該程序,結果就無法出現。填好這個表單,然後按下提交按鈕,即可在浏覽器的URL地址窗口裡看到象下面這樣的內容:
http://www.myhome.com/cgi-bin/Listmgr2.exe?name=First+Last&[email protected]&submit=Submit

③:在Windows32平台下,可利用與Microsoft Office 97或其他產品配套提供的Microsoft Personal Web Server(微軟個人Web服務器)進行測試。這是進行試驗的最好方法,因為不必正式連入網絡,可在本地環境中完成測試(速度也非常快)。如果使用的是不同的平台,或者沒有Office 97或者FrontPage 98那樣的產品,可到網上找一個免費的Web服務器供自己測試。

當然,上述URL實際顯示時是不會拆行的。從中可稍微看出如何對數據編碼並傳給CGI。至少有一件事情能夠肯定——空格是不允許的(因為它通常用於分隔命令行參數)。所有必需的空格都用“+”號替代,每個字段都包含了字段名(具體由HTML頁決定),後面跟隨一個“=”號以及正式的字段數據,最後用一個“&”結束。
到這時,大家也許會對“+”,“=”以及“&”的使用產生疑惑。假如必須在字段裡使用這些字符,那麼該如何聲明呢?例如,我們可能使用“John & MarshaSmith”這個名字,其中的“&”代表“And”。事實上,它會編碼成下面這個樣子:
John+%26+Marsha+Smith
也就是說,特殊字符會轉換成一個“%”,並在後面跟上它的十六進制ASCII編碼。
幸運的是,Java有一個工具來幫助我們進行這種編碼。這是URLEncoder類的一個靜態方法,名為encode()。可用下述程序來試驗這個方法:

 

//: EncodeDemo.java
// Demonstration of URLEncoder.encode()
import java.net.*;

public class EncodeDemo {
  public static void main(String[] args) {
    String s = "";
    for(int i = 0; i < args.length; i++)
      s += args[i] + " ";
    s = URLEncoder.encode(s.trim());
    System.out.println(s);
  }
} ///:~

該程序將獲取一些命令行參數,把它們合並成一個由多個詞構成的字串,各詞之間用空格分隔(最後一個空格用String.trim()剔除了)。隨後對它們進行編碼,並打印出來。
為調用一個CGI程序,程序片要做的全部事情就是從自己的字段或其他地方收集數據,將所有數據都編碼成正確的URL樣式,然後匯編到單獨一個字串裡。每個字段名後面都加上一個“=”符號,緊跟正式數據,再緊跟一個“&”。為構建完整的CGI命令,我們將這個字串置於CGI程序的URL以及一個“?”後。這是調用所有CGI程序的標准方法。大家馬上就會看到,用一個程序片能夠很輕松地完成所有這些編碼與合並。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved