本文簡單介紹 Cookie 技術在 J2ME 平台的應用與實現。首先看 Cookie 原理:當伺服器需與瀏覽器維持特定狀態(如記錄購物車商品),可建立 Cookie 寫入響應,瀏覽器接收並保存。瀏覽器再次請求時,根據域與路徑檢查匹配的 Cookie,以「名稱=值」形式發送給伺服器,伺服器解析得知用戶狀態。
Cookie 在 Web 廣泛用於維護瀏覽器與伺服器狀態,遺憾的是 Java ME 平台未原生支援。若要維持客戶端與伺服器狀態,必須採用 URL 重寫,操作麻煩。研究 Cookie 原理並在 Java ME 實現是不錯嘗試。
瀏覽器決定發送 Cookie 規則:先匹配 domain,再匹配 path。Cookie 有存活週期,到期自動清除;未設定壽命則會話結束後刪除;未指定 path 則預設為請求路徑。Cookie 廣泛用於記住密碼、購物車等。若 MIDlet 支援 Cookie,維持狀態將變簡單,讓開發者專注業務邏輯。
伺服器響應到來時,應能讀取 Cookie。伺服器寫入 Cookie 時,HTTP 頭 Set-Cookie 包含資訊字串。幸運的是可用 HttpConnection.getHeaderField("Set-Cookie") 獲取,但需注意僅讀取一個 Cookie;若響應含多個 Cookie,需循環讀取。示例代碼:
String sCookie = null;
String key = null;
int i = 0;
while ((key = connection.getHeaderFieldKey(i)) != null) {
if (key.equals("Set-Cookie") || key.equals("SESSIONID")) {
sCookie = connection.getHeaderField(i);
saveCookie(sCookie, url);
}
i++;
}
以上代碼讀取 Set-Cookie 與 SESSIONID 兩類 Cookie 內容。