你對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聯絡起來。