java web 做购物车的大概思路,和实现步奏是什么?
购物车管理模块主要功能有如下几个部分:
(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 = 该商品已经存在!请返回!;
request.setAttribute(message, message);
return mapping.findForward(error);
} else {
/*
* 向购物车添加一个商品;
*/
cart.addCart(product);
session.setAttribute(cart, cart);
return mapping.findForward(addcartsuccess);
}