Java 讀取不到Cookie中的數據


電商項目購物車模塊,要求用戶在非登錄情況下也可將商品加入購物車,因此設計如下:

1.如果添加購物車時,用戶已經登錄,則將購物車數據儲存到redis和數據庫中,而且數據要保持一致,用戶查詢時從redis中獲取;

2.如果添加購物車時,用戶未登錄,則將購物車數據添加到cookie中,查詢、修改和刪除也在cookie中進行;如果用戶登錄成功,則通知將cookie中的購物車數據持久化到數據庫和redis中。

用戶未登錄時,將購物車加入cookie,代碼如下:

此處的cookieKey生成規則是:GoodsCart_goodsId_property,其中property為propertyId:propertyValueId,多個之間以“_”相連,例如 1:23_2:24_3:25。

從cookie中查詢購物車信息,代碼如下:

但是,查詢出來的cookie數組中只有一個cookie,即JSESSSIONID,並沒有我存進去的購物車信息,然后在瀏覽器中查看cookie,發現已經存在,但是就是讀取不出來。

解決方案:

經過排查,是因為cookie的特殊字符的原因,“:”是cookie中特殊字符,所以從cookie中讀取時出現數據丟失或者解析錯誤;

一個較好的解決辦法就是:在將cookie值寫入客戶端瀏覽器之前,首先進行URLEncode編碼,讀取cookie時,進行URLDecode即可。

加入購物車:

查詢購物車:

問題完美解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM