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