给你介绍三种可以实现购物车功能的方法:
1.用cookie实现购物车
2.用session实现购物车
3.用cookie和数据库(购物车信息持久化)实现购物车
=======================================================
分析一下这三种方法的优缺点:
1.单纯有cookie实现购物车,这样的购物车不是很理想,设想一下,如果客户端的浏览器把cookie给禁用了,这种方法就会在这里流产...
2.session中保存购物车的信息,这个只是在一个会话中可用,如果用户没有登录,或者说登录了以后,添加购物车,在关闭浏览器或者登出后,之前所添加的购物车通通都流产啦...
3.用cookie和数据库(购物车信息持久化)实现购物车
主要的流程:
A.用户登录前的数据流:用户在没有登录系统的时候,对喜欢的商品进行添加购物车,那么这个时候,我们可以把购物车信息保存
到cookie中,这里会涉及到cookie的添加,修改操作也即如果之前在cookie中不存对应的cookie,则就对cookie进行添加操作。
如果在cookie中存在对应的cookie,那么,这时候,就要对cookie进行修改操作了(这里涉及到用户对同一个商品进行多次添加购物车的情况)。
B.用户登录后的数据流:用户在登录后,系统首先做的第一件事就是去获取对应的cookies,如果存在相关的购物车cookies,那么就对该购物车
信息进行相应用户User的持久化操作,要么添加,要么修改。(添加操作:该用户所对应的购物车如果没有相应的信息进行添加操作修改操作:类似的,
如果存在对应用户的购物车信息,就进行修改操作)。用户登录后,也可以进行购物车的添加操作,不过,这里不是添加到cookie中,而是直接持久化到数据库中。
java教程购物车Struts Hibernate实现shopcart全部代码在
http://www.java125.cn/article.asp?id=1038
原理:利用session会话保持用户一次购物操作的购买记录,当用户点击“结帐”后将保存在session中的hashmap容器中的信息insert到DB中,完成一次购物操作。
模块所需要配置文件:hibernate.cfg.xml ,TableGoods.hbm.xml ,struts-config.xml
模块对应的jsp有:index.jsp(商品信息一览页面),buy.jsp(购买操作后的商品清单页面)
模块对应的action有:IndexAction (实现对DB中的商品表信息结果集的遍历,并转向对应的index.jsp)
ListAction (将JSP上的商品信息存入hashmap容器,并转向对应的buy.jsp)
UpdateAction (对buy.jsp页面上的商品数量修改的业务逻辑处理)
DeleteAction (对buy.jsp页面上的商品列表信息的业务逻辑处理)
模块所需的相关Java容器选择:存储商品id,sum,price,name,allprices信息用hashmap,主要是考虑到其key重复后可以覆盖上次的value记录。存储点击商品后的商品id用list容器,主要考虑到list是有序并可以重复的特点,用其可以跟踪用户多次点击相同商品的操作,并对商品的数量进行相应的增加。
模块主要Action类如下:
IndexAction:
public class IndexAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//查找商品表中的所有商品信息
GoodsDAO dao = new GoodsDAO()
List list = dao.find()
request.setAttribute("lister",list)
return mapping.findForward("a")
}
}
ListAction:
public class ListAction extends Action {
// 将hashmap中value转到list中
public static List getList(HashMap hs) {
List list = new ArrayList()
Iterator itr = hs.keySet().iterator()
while (itr.hasNext()) {
list.add(hs.get(itr.next()))
}
return list
}
//优化后的getList方法
public static List getList(HashMap hs) {
return new ArrayList(hs.values())
}
全部代码在
http://www.java125.cn/article.asp?id=1038