cookie技術在J2ME平台的應用

2023-01-19 13:54:04 字數 2962 閱讀 4099

本文向大家簡單介紹一下cookie技術在j2me平台的應用與實現,首先,我們來看一下cookie的原理。當伺服器需要和瀏覽器維持某一狀態的時候,例如需要記錄使用者的購物車中已經購買的商品。這時候伺服器可以新建乙個cookie並把它寫入到響應中,瀏覽器從響應中接收到cookie並儲存起來。

cookie在web應用程式中被廣泛採用,維護瀏覽器和伺服器之間的狀態。遺憾的是這一特性在j**ame平台中並沒有得到支援。因此,要想維持客戶端和伺服器端的狀態則必須使用url重寫的方式。

url重寫操作起來比較麻煩,所以研究一下cookie的原理並在j**ame平台上實現cookie是不錯的嘗試。

首先,我們來看一下cookie的原理。當伺服器需要和瀏覽器維持某一狀態的時候,例如需要記錄使用者的購物車中已經購買的商品。這時候伺服器可以新建乙個cookie並把它寫入到響應中,瀏覽器從響應中接收到cookie並儲存起來。

當瀏覽器再次向伺服器傳送請求的時候,瀏覽器會根據域(domain)和路徑(path)檢查是否有匹配的cookie,如果有則把cookie以「名稱=值」的形式傳送給伺服器,伺服器從請求中解析出cookie就知道使用者的狀態了。

那麼,瀏覽器根據什麼規則來決定向伺服器傳送cookie呢,武漢北大青鳥告訴你,首先要匹配domain,如果cookie的域屬性是。那麼請求指向的時候,cookie就不會被傳送。如果域匹配的條件滿足,則判斷path是否匹配,如果cookie的path屬性是請求的uri的父目錄的話,那麼cookie就會被傳送給伺服器。

cookie是有存活週期的,到期的cookie會被瀏覽器自動清除。如果伺服器建立cookie的時候不設定生命週期,那麼在會話結束後瀏覽器就會刪除cookie.如果不為cookie指定path屬性,那麼預設就是這次請求的路徑。

cookie在很多web應用程式中都有應用,比如記住密碼,購物車等。在開發midlet的時候,你也可以讓你的應用程式支援cookie,這樣維持客戶端與伺服器端的狀態將變得簡單,為你集中精力解決其他業務方法奠定了基礎。既然已經知道了cookie的工作原理,那麼就應該考慮一下在j**ame平台如何實現cookie,這個想法是否可行。

我將從下面三個方面進行分析。

第一:獲得cookie

當伺服器端的響應到來的時候,我們應該能夠讀取cookie。如果伺服器向客戶端寫入cookie的時候,響應中的http頭「set-cookie」中會包含乙個字串,代表了cookie的資訊。幸運的是我們是用"set-cookie")方法即可獲得cookie,但是需要注意這裡只是讀取了乙個cookie,如果響應中包含了多個cookie,那麼你需要迴圈讀取。

類似於下面的**:

stringscookie=null;

stringkey=null;

inti=0; //如果key存在,則查詢header的key,如果key等於set_cookie,則儲存

while((key=

i++;

}  上面的**把header是set-cookie和sesssionid的cookie內容讀取下來。

第二:儲存cookie

已經獲得了cookie之後,就需要把cookie儲存下來,儲存分為兩個部分,首先需要解析cookie,我們定義乙個j**abean來代表cookie.

/** *acookiestoredonthemobiledevice,

*@authormingj**a

*@version0.105/06/2006

*/publicclasscookie

publicstringgetpath()

publicvoidsetpath(stringpath)

publicstringgetname()

publicvoidsetname(stringname)

publicstringgetvalue()

publicvoidsetvalue(strin**alue)

publicvoidserialize(dataoutputstreamdos)

throwsioexception

publicstaticcookiedeserialize(datainputstreamdis)throwsioexception

publiclonggetexpire()

publicvoidsetexpire(longexpire)

//fordebug

publicstringtostring()

publicbooleani***pired(longnow)

publicbooleani***pired()

publicstaticcookieparsecookie(strings,stringuri)elseelseif("expires".equals(name))elseif("domain".equals(name))else }

if(""))

} returncookie; }

publicbooleanequals(objectobj) returnfalse; }

publicinthashcode() }

提供了乙個parsecookie方法來解析cookie,具體的原理就不再介紹了。然後需要把這個cookie物件儲存到rms中。cookie並不大,所以不會占用太多的空間,在rms中儲存非常合適。

注意對於會話期間的cookie沒有必要儲存在rms中,因為會話結束後就失效了,不如在記憶體中宣告乙個map來儲存會話型別的cookie。

第三:傳送cookie

傳送cookie也是需要兩個步驟,首先檢索rms和記憶體看是否有滿足條件的cookie,如果有讀取出來。

然後通過下面的方法向伺服器端傳送:

//檢查是否有cookie需要傳送給伺服器端

string_cookie=collectcookie(url);

if(_cookie!=null)

如果能夠順利解決上面的三個步驟,基本可以實現cookie在j**ame平台的應用。在《j**ame核心技術與最佳實踐》一書中,本人編寫了乙個httpme聯網框架,其中包括了cookie在j**ame平台的實現,供大家參考。

網路Cookie工作原理

雖然大多數網路cookie使用起來相當簡單,但是它們也有自己獨特的原理。由於涉及到網際網路隱私問題,cookie從2000年就開始受到廣大 的關注,直到現在仍存在著激烈的爭論。然而,cookie提供了使web更加容易導航的能力。幾乎每個 的設計人員都會使用cookie,因為它們能夠提供更好的使用者體...

PHP之COOKIE支援詳解

建立商業站點或者功能比較完善的個人站點,常常需要記錄訪問者的資訊,在php中提供了兩種方便的手段 session和cookie功能.為了永久的保持使用者資訊,則cookie是最便捷的手段.在這裡我將為大家詳細的講解cookie的功能及使用方法.一 設定cookie 使用cookie前必須設定cook...

jQuery之cookie使用方法

乙個輕量級的cookie外掛程式,可以讀取 寫入 刪除cookie。的配置首先包含jquery的庫檔案,在後面包含的庫檔案。使用方法 新新增乙個會話cookie cookie the cookie the value 注 當沒有指明cookie有效時間時,所建立的cookie有效期預設到使用者關閉瀏...