Session购物车实现

//添加购物车
    private void addCart(HttpServletRequest request, HttpServletResponse response) {
        
        response.setContentType("application/html;charset=utf-8");
        
        try {
            //获取session        
            HttpSession session = request.getSession();
            //定义菜品数量
            Integer counter=null;

            //从前端获取菜品的id
            String id=request.getParameter("id");    
            String table_id=request.getParameter("table_id");//从前端获取餐桌的id
            Food food=foodService.getFoodListById(Integer.parseInt(id));//根据id查询菜品,返回一个菜品对象
            //刚开始访问网站时会自动生成一个session,这个session为空
            //判断session里面是否有orderlist这个变量的值,因为知道这个session是空的,所以走if的时候,新创建一个map,并把map放进session。并设置菜品数量是1,map中存放的key是菜品对象food,value是菜品数量,然后把session强装为map集合,session里面存放的数据类型是key,value同map
            Map<Food,Integer > map=(Map<Food,Integer >)session.getAttribute("orderlist");
            if(map==null) {
                map=new HashMap<Food,Integer>();
                session.setAttribute("orderlist", map);
                counter=1;
            }else {
                //查看该菜品是否存在
                counter=map.get(food);
                //如果购物车没有该菜品
                if(counter==null) {
                    counter=1;
                }else {
                    //如果有菜品数量++
                    counter++;
                }
            }
            /*System.out.println(food);//打印菜品对象food和菜品数量
            System.out.println(counter);*/
            //将food放入map集合里,也就是放入session,上面session强装为map集合,购物车
            map.put(food, counter);
            Double total=0.0;//定义总价
            Double price=0.0;//定义单个菜品总价

            //遍历map集合中的food对象,并计算单个菜品总价,和所有菜品的总价
            for (Food f : map.keySet()) {
                //单价    *  数量
                price=f.getPrice()*map.get(f);
                total+=price;
            }
            request.setAttribute("table_id", table_id);//将餐桌id传到前台
            request.setAttribute("total",total );//将总价传到前台
            request.setAttribute("map", map);//将map传到前台
            request.getRequestDispatcher("/front/cart/clientCart.jsp").forward(request, response);//servlet端跳转
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        
        
        
    }

效果如图:

购物车删除同上:

//从购物车删除
    private void removeCart(HttpServletRequest request, HttpServletResponse response) {
        
        try {
            HttpSession session = request.getSession();
            String id=request.getParameter("id");    
            Food food=foodService.getFoodListById(Integer.parseInt(id));        
            Map<Food, Integer> map= (Map<Food, Integer>)session.getAttribute("orderlist");

                map.remove(food);
                session.removeAttribute("orderlist");
                session.setAttribute("orderlist1", map);
                Double total=0.0;
                Double price=0.0;
                for (Food f : map.keySet()) {
                    //单价    *  数量
                    price=f.getPrice()*map.get(f);
                    total+=price;
                }
                
                request.setAttribute("total",total );
                request.setAttribute("map", map);
                request.getRequestDispatcher("/front/cart/clientCart.jsp").forward(request, response);
            
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

猜你喜欢

转载自blog.csdn.net/yuanboqi/article/details/81068863