java web 做购物车的大概思路,和实现步奏是什么?

Python018

java web 做购物车的大概思路,和实现步奏是什么?,第1张

购物车管理模块主要功能有如下几个部分:(1)创建购物车 当客户登录后,系统会给客户创建一个购物车放入服务器的Session会话中。使客户在整个会话中都拥有一个相同的购物车。这里主要运用了Http协议中的会话机制,将购物车保存在客户的会话中,这样在整个客户游览不同页面商品的过程中,都会使用同一个购物车对象。 具体执行步骤:(1)从客户的请求对象中获取Session会话对象(2)从会话对象中获取购物车对象(3)判断是购物车对象是不是空的,如果是空是就创建一个/* * 在监听到session被创建之后,就立即向session中添加一个购物车Car; */public void sessionCreated(HttpSessionEvent arg0) { HttpSession session = arg0.getSession() Cart cart=new Cart() session.setAttribute("cart", cart) }/** 从session中获得购物车*/ Cart cart = (Cart) session.getAttribute("cart") if (cart == null) { cart = new Cart() }(2)向购物车中添加一个商品项 客户在查看网页上的一个商品时,当向服务器发送一个“添加到购物车”的请求时,会执行这个功能。功能执行过程:(1)从客户请求对象中获取商品的ID(2)调用业务层的方法根据商品ID去数据查询商品的信息,返回商品对象(3)从商品对象中获取商品名,商品价格,来构建一个商品项对象(4)从Session会话中获取购物车对象(5)调用业务层的方法来根据购物车对象和商品项对象来执行添加操作(6)将些商品项对象放入到购物车中 部分实现代码: /** 从数据库中把商品取到;*/ ProductService productService = (ProductService) ServiceFactory.getInstance().getService(Globals.PRODUCT_SERVICE) Integer id = Integer.parseInt(request.getParameter("productid")) Product product = productService.getProductById(id) /** 在向购物车中添加商品的时候会判断商品是否已经存在,* 已存在的就不让在加入了;*/ if (cart.isExist(id)) { message = "该商品已经存在!请<a onclick='javascript:history.go(-1)'>返回</a>!" request.setAttribute("message", message) return mapping.findForward("error") } else { /** 向购物车添加一个商品;*/ cart.addCart(product) session.setAttribute("cart", cart) return mapping.findForward("addcartsuccess") }

给你介绍三种可以实现购物车功能的方法:

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