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