javaWeb12--购物车项目

这个博客主要展示了如何在Java Web应用中实现商品的展示、购物车功能以及订单管理。通过shop.jsp和cart.jsp界面,实现了商品信息的显示、添加到购物车和购物车商品的展示。在docart.jsp中,处理了购物车商品的添加,解决了覆盖和重复问题。同时,提供了删除和修改购物车商品的功能,并展示了订单结算的总价计算。最后,讨论了分页查询的方法,用于展示商品列表的分页效果。
摘要由CSDN通过智能技术生成

一、商品的展示
---shop.jsp界面商品展示

<%
        //表示层 调用业务逻辑层
        IGoodsBiz igb=new GoodsBiz();
        //调用查看全部的方法
        List<Goods>lg =igb.getAllByPage(1, 4);
        for(Goods i:lg){
            
        %>

---- 商品信息的显示

        <td><%=i.getGid() %></td>
        <td><%=i.getGname() %></td>
        <td><%=i.getGprice() %></td>
        <td><%=i.getGinfo() %></td>
        <td><img  src="<%=i.getGpath() %>">  </td>
        <td><a href="docart.jsp?gid=<%=i.getGid() %>">加入购物车</a></td>
        </tr></br>
        <%
        }
        %>

二、购物车商品订单展示
---cart.jsp购物车界面

<%
        
        //从session中取出订单项的集合(Orderi :订单项)
        List<Orderi> ls =(List<Orderi>)session.getAttribute("mycart");
        //遍历
        for(Orderi oi:ls){
             
                 
        %>
        <td><%=oi.getGoods().getGid() %></td>
        <td><%=oi.getGoods().getGname() %></td>
        <td><%=oi.getGoods().getGprice() %></td>
        <td><%=oi.getGoods().getGinfo() %></td>
        <td><img  src="<%=oi.getGoods().getGpath()%>">  </td>
        <td><input type="text" id="<%=oi.getGoods().getGid() %>" value="<%=oi.getSl() %>" /></td>
        <td><%=oi.getZj() %>元</td>
        <td>
        <a οnclick="return confirm('你确定要删除吗?')" href="dodelete.jsp?gid=<%=oi.getGoods().getGid() %>">删除 &nbsp; &nbsp;</a>
        <input type="button" value="修改" οnclick="myf('<%=oi.getGoods().getGid() %>')"/> 
        </td>
        </tr></br>
        
        <%
        }
        %>

实现查询购物车的方法容易出现的问题:docart.jsp

<%
        //接收gid实现单个查询
        String gid=request.getParameter("gid");
        //根据gid拿到对应商品对象==查询单个
        IGoodsBiz igb=new GoodsBiz();
        Goods goods= igb.getAllId(gid);
        

1、解决覆盖问题

//拿值
         List<Orderi> ls=(List<Orderi>)session.getAttribute("mycart");
            if(ls==null){//说明没有拿到值 ,购物车是空的
            ls=new ArrayList<Orderi>();
        }

2、解决重复问题

//假设法
        boolean   f=false;//假设商品不存在
        //遍历循环
        for(Orderi oi:ls){
            if(oi.getGoods().getGid()==Integer.parseInt(gid)){
                //数量在自身基础上加1
                oi.setSl(oi.getSl()+1);
                oi.calc();//改变总价
                f=true;//存在
                break;
            }
            
            
        }

     if (f==false){//确实不在
            //形成一个订单项
            Orderi item= new  Orderi();
            item.setGoods(goods);
            item.setSl(1);
                item.calc();//计算
            //把订单加到集合里
            ls.add(item);    
        }
        


        
        //把集合存到session里
        session.setAttribute("mycart", ls);
        //跳转到购物车界面进行展示
        response.sendRedirect("cart.jsp");
        

%>

三、删除与修改、订单结算
(1)删除该商品:cart.jsp界面传gid,dodelete.jsp接收gid 利用gid,来进行删除
<%
    //接收gid
    String gid=request.getParameter("gid");
    //拿到订单集合
    List<Orderi> ls=(List<Orderi>)session.getAttribute("mycart");
    //遍历
    for(Orderi oi:ls){
        if(oi.getGoods().getGid()==Integer.parseInt(gid)){
            //说明找到了 移除掉
            ls.remove(oi);
            break;
        }
    }
    response.sendRedirect("cart.jsp");
    
    
    
    %> 

(2)修改:doupdate.jsp界面:根据gid修改num(总价).数量(sl)
//接收gid.num
            String gid=request.getParameter("gid");
            String num=request.getParameter("num");
    
            
            //拿到订单集合
            List<Orderi> ls=(List<Orderi>)session.getAttribute("mycart");
            //遍历
            for(Orderi oi:ls){
                if(oi.getGoods().getGid()==Integer.parseInt(gid)){
                    //说明找到了,改变数量和价格
                    oi.setSl(Integer.parseInt(num));
                    oi.calc();
                    break;
                }
            }
            response.sendRedirect("cart.jsp");
            
            

(3)结算金额:
<%
            List<Orderi>ls=(List<Orderi>)session.getAttribute("mycart");
        int sum=0;
        //循环遍历
        for(Orderi oi:ls){
            sum+=oi.getZj();//所有的单个价格和总价加起来的总和
        }
        
        //清空购物车
        //session.invalidate();//让session失效
        session.setAttribute("mycart", null);
        %>

四、分页
: 规律 (pageIndex-1)*pageSize------pageIndex*pageSize-1
----分页方法GoodsBiz.java界面

public List<Goods>getAllByPage(int pageIndex, int pageSize){
        List<Goods>newls=new ArrayList<Goods>();
        //先一次性拿到所有的数据
        List<Goods>ls=getAll();//下标0-ls.size()-1
        int a=(pageIndex-1)*pageSize;
        int b=pageIndex*pageSize-1;
        
        //循环
        for(int i=a;i<=b;i++) {
            if(i>=ls.size()) {//防止下标越界异常
                break;
            }
            Goods g=ls.get(i);
            //加到新集合里
            newls.add(g);
        }
        return newls;
    }
    
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值