首先、简单的了解session和cookie的区别:
一、session和cookie的区别:
session是把用户的首写到用户独占的session中(服务器端)
cookie是把用户的数据写给用户的浏览器。
session对象由服务器创建,开发人员可以调用request对象的getsession方法得到session对象。
转自(实现代码):http://www.cnblogs.com/yejiurui/archive/2012/10/04/2711503.html
二、思路
1、当一个用户点击购买一件商品时,将该商品的对象存放到一个list集合中
2、之后就将这个集合存进session
3、当要再购买一件商品时,同理,将该商品存进session中的list集合
4、下单时,就将session中的list集合遍历存放到订单明细表中(订单表与订单明细表是一对多关系)
三、使用session的优缺点
由于购物车是实时操作的数据,如果通过在服务器数据库中建表的形式保存购物车数据,那么将导致频繁操作数据库,用户量多的情况下会对数据库造成极大负担,容易出现并发错误,或者直接崩溃。
session效率高,会话是针对各个链接的,便于管理,但是存在生命有效期,根据服务器的设置不同而不一样长。如果session超时,购物车中的数据将会丢失。
不过,例如当当网的购物车没有,用户下线之后,再次上线,购物车中的东西还是存在的,这对于用户来说非常方便。所以如果你的服务器够强的话,完全可以用一个静态变量来保存所有用户的购物车,比如用一个静态的Map,以IP作为Key,区分不同用户的购物车,这样就可以使用户在下线的情况下也可以保存购物车中的内容。这种方法实现过,只是没有用大量的并发访问测试其稳定性,但是一定是可行的。