2011-07-09 64 views
0

我試圖建立一個購物車的網絡應用程序,以便我可以學習javaee。 我正在使用murach的書和head-first-servlets書籍作爲參考。 此外,我通過亞馬遜網站了解購物車behaviour.I列出我的觀察 以及下面的設計理念..我會歡迎您對此的更正/建議。購物車..以前沒有登錄過的用戶狀態

有一兩件事我注意到的是客戶並不需要登錄之前。一旦他完成更新車,他去checkout.Then他被要求進行登錄info.If他不,他可以將項目添加到購物車沒有,他是一個新客戶,可以註冊並繼續。

請考慮這種情況。

假設沒有登錄權限的新客戶添加了幾件商品到購物車。在他去結賬頁面之前,他出去喝茶。 讓瀏覽器空閒5分鐘(可以說,此webapp的會話超時設置爲5 mts)。他如何檢索購物車的早期狀態?

如果shoppingcart對象存儲在會話中,並且超時時間爲5 mts,則這是不可能的。 亞馬遜使用cookies跟蹤購物車。如果您嘗試將商品添加到購物車中,即使沒有登錄, 關閉瀏覽器會在同一臺機器上使用相同的瀏覽器回到亞馬遜的購物車頁面。您會發現添加了商品的購物車相同。 我不認爲他們的會話過期,直到有人清除cookie。

因此,要做到這一點,一種方法是將購物車的狀態與客戶的數據庫一起存儲。

class Customer{ 
    ... 
    private ShoppingCart cart; 
    ... 
} 

但是,如果用戶沒有登錄,並且如上所述尚未完成購買,該怎麼辦? 這意味着沒有存儲在數據庫中的Customer對象。只有那個somone從該機器中的特定瀏覽器將項目添加到購物車。

使用cookie跟蹤此信息。如果不會發生會話超時,則只有在清除cookie後會話纔會過期。

我想你對this..Being一個新手的意見,我錯過了很多東西在設計和coding..Please告訴我,如果有任何 盲點..

感謝

馬克

回答

5

你可以做到以下幾點:

  • 未認證用戶添加的第一個項目到他的車,給它分配一個唯一的ID。
  • 將該標識存儲在Cookie中
  • 在數據庫中保存對購物車所做的更改,並將該標識作爲主鍵。

當會話超時:從價值以前分配給用戶的購物車

  • 餅乾

    • 讀恢復車從存儲在數據庫中的數據在當前會話。

    有一個缺點:

    • 假設你已經存儲在用戶的購物車中的數據塊,而用戶永遠不會回來了。在這種情況下,您需要執行清理策略,例如,購物車最多可以存儲兩週。
    • 這也可能發生在用戶清理其瀏覽器的緩存

    考慮到了用戶可以使用不同的瀏覽器(因此,不同的緩存/餅乾)

  • +0

    感謝..those是瀏覽您的網站好的建議 – markjason72

    相關問題