你對J2ME中的cookie管理方案是否熟悉,這裡和大家簡單分享一下,cookIE庫在固有的Java.Net工具箱中很少見,本文中CookIE管理庫盡量使用核心JavaAPI類。
J2ME中的cookIE管理方案(1)-與J2ME結合
前言
客戶端HTTP狀態管理對於創建需要與象基於網絡浏覽器的email或在線銀行服務網絡程序交互作用的java應用程序是十分重要的。本文介紹了在Java中一個強大易用的客戶端HTTP狀態管理cookIE庫,這個庫在固有的Java.Net工具箱中很少見。其中存在幾種客戶端HTTP狀態管理APIs,它們提供了難於學習並沒必要重新開發設計的函數方法。這篇文章中CookIE管理庫盡量使用核心JavaAPI類。
當在開發一個針對所有主要的internet郵件服務器(基於Web或其他類型)提供單點訪問的通用郵件客戶端時,我發現我的應用程序經常不得不作為一個小的網絡浏覽器與提供郵件服務的網站交互。當開發XML網絡服務以便於機器更容易訪問網站時我總在需要網站交互時遇到困難。這些網站經常使用cookies進行狀態管理及維護用戶會話數據,在這兩種情況,我意識到多數網站交互都涉及cookie操作。我也注意到雖然兩種情況下的應用程序都執行cookie操作,但其邏輯處理較困難及不具有互換性。針對此限制,我從開發一個小型普通用途庫出發致力於cookIE操作。在這篇文章中我將與你分享這個庫。
為了在運行中圖解說明庫,我建議使用基於Hotmail郵件檢測器的控制台。此外,我從在J2ME平台上使用MIDP的移動設備觀點探究了客戶端狀態管理。
CookIE基礎
讓我們從回答一些問題開始:
什麼是狀態管理,為什麼我們需要它?
什麼是cookIEs,它們怎樣適應圖片?
要回答第一個問題,我們必須更精密地檢測一下HTTP。HTTP是無國界協議,因為從網絡服務器觀點看所有HTTP請求都獨立於先前請求。就是說每一個HTTP響應完全依賴於相應請求中包含的信息。當這種行為使網絡服務執行更簡單有效時,用它作為復雜網絡應用的基礎將更為合適。
狀態管理機制克服了HTTP的一些限制並允許網絡客戶端及服務器端維護請求間的關系。在這種關系維持的期間叫做會話(session)。多數要求你登錄的網絡應用程序使用了會話及狀態管理。購物推車應用程序使用狀態管理控制所有標記為已購買項目的列表。狀態管理能夠使個別用戶參數的入口及搜索引擎個性化定制。網絡應用程序甚至能使用狀態管理根據用戶愛好興趣定制網站內容。
Cookies影響著狀態管理。CookIEs是服務器在本地機器上存儲的小段文本並隨每一個請求發送至同一個服務器。
IETFRFC2965HTTPStateManagementMechanism是通用cookie規范。網絡服務器用HTTP頭向客戶端發送cookIEs,在客戶終端,浏覽器解析這些cookIEs並將它們保存為一個本地文件,它會自動將到同一服務器的任何請求縛上這些cookies。在這篇文章後面,我同義性地使用了cookIE操作和狀態管理術語。
如果你要找出你訪問的哪個網站使用了cookIEs,可以試試這個簡單的試驗:
注意:只有當你覺得改變你的浏覽器設置沒什麼問題並知道方法時才執行這個練習。
◆打開你常用的浏覽器,我假設你使用的是InternetEXPlorer(IE)5+或NetscapeNavigator4+。
◆使自動cookIE操作無效:
在IE浏覽器的“工具”菜單中選擇“Internet選項”,再選擇“安全”標簽,單擊“自定義級別”然後向下拉動滾條直到你看見“允許使用存儲在你計算機上的cookies”並選中“提示”選項,同時也選中“允許使用每個對話cookIEs(未存儲)”的“提示”選項,單擊“確定”按鈕回到主窗口。
在NetscapeNavigator的“編輯”菜單中選擇“參數選擇”中的“高級”,選中“接收cookIE時警告”,單擊“確定”按鈕回到主窗口。
◆現在浏覽你“收藏”中的站點,特別是當你檢查你的網絡郵件或進入在線電子商店時,要求你允許接收cookIEs的對話框會不斷地向你轟來。
將上面的步驟恢復到你以前的初始設置,你也能看見哪些cookIEs被保存到了你的本地機器上(在警告應用之前):
◆對於IE:使用“Windows資源管理器”或“我的電腦”浏覽C:WindowsCookies文件夾,在這個文件夾中的所有文本文件都包含cookIEs。
◆對於NetscapeNavigator:
在Windows系統中,使用“Windows資源管理器”或“我的電腦”浏覽C:PRogramFilesNetscapeUsers文件夾,找到一個名叫“cookies.txt”的文件或“cookIEs”子目錄。
在Unix類似系統中,在“.Netscape”目錄中找到一個名叫“cookIEs”的文件。
注意:根據你安裝的系統不同,使自動cookie操作無效及查看保存的cookIEs的步驟也可能不同。
現在你已經知道了一些基本知識,接下來我將闡述怎樣將這些與Java聯系起來。