Dam*_*ian 8 java shopping-cart playframework
我正在学习使用playframework
编写代码来实现webstore
销售物品.我已经Admin
使用crud
和modules实现了该区域secure
.现在,我想创建shopping cart
一个用户可以添加项目并继续结帐的项目.
我的电子商务的知识是最小的,但我已经通过一些教科书,其实现使用购物车和一些网上商店的功能了servlets
.在书籍,使用的车保持Set
的CartItem
S,每一个包含的实例Product
和quantity
.之后,该用户将商品添加到购物车,购物车存储在user session
.
因此,只要用户进入购物车详细信息页面,它就会显示所有添加的项目.只有当会话被清除时(由于服务器中定义的会话超时或订单下达时),CartItem
s 才会从这个ShoppingCart
.
我想,我可以在playframework中使用Cache来完成上述操作.将CartItem添加到ShoppingCart实例后.我可以
shopcart.add(mycartItem);
Cache.set(session.getId(), shopcart);
..
Run Code Online (Sandbox Code Playgroud)
然后,在另一个页面中,我可以检索购物车及其内容,处理它们并清理购物车.
ShopCart cart = Cache.get(session.getId(),ShopCart.class);
Set<CartItem> items = cart.getCartItems();
processOrder(items,userinfo);
...
cart.clearItems();
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?如果我的想法不正确,请帮我提出建议.
Per*_*ega 13
错误.对不起是如此苛刻,但你正在做的事可能会失败.
游戏没有任何意义和无国籍.所有相关数据必须存储在数据库中.这意味着您必须在用户添加新项目时保留购物车的数据,并在事务完成后将其删除.
你为什么不能使用缓存?因为缓存是易变的,并且可以在没有先前警告的情况下移除其中的元素.这意味着您的缓存可能随时返回null(未找到项),并且您的代码中出现NullPointerException,并且您的用户丢失了购物车.
缓存仅用于帮助提高性能,但您不能指望它始终拥有您需要的所有项目.
你应该把你的ShopCart变成一个实体(如果它不是一个)并添加到这样的东西:
public static ShopCart findCart(String sessionId){
ShopCart sc = Cache.get(session.getId(),ShopCart.class);
if(sc == null){
sc = ShopCart.findCurrentUserCart(); //implement to find the cart of the current user
Cache.set(sessionId,sc);
}
return sc;
}
Run Code Online (Sandbox Code Playgroud)
然后使用此方法在处理之前检索购物车.
归档时间: |
|
查看次数: |
2911 次 |
最近记录: |