JavaWeb(session购物车项目的部分)

这篇博客详细介绍了如何在Web应用程序中使用Session来管理购物车。通过点击‘加入购物车’,商品 gid 被获取并存储在Session中。如果用户未登录,则重定向到登录页面;否则,检查购物车是否已有该商品,如有则数量加一,否则创建新的订单项。同时,展示了删除和修改购物车商品数量的方法,每次操作后都将更新后的购物车列表存回Session,并重定向到购物车页面显示。
摘要由CSDN通过智能技术生成

点击加入购物车表示层:

<td><a href="doshop.jsp?gid=<%=g.getGid()%>">加入购物车</a></td>

逻辑层:

request.setCharacterEncoding("utf-8");
	//接收gid
	String gid=request.getParameter("gid");
	String name=(String)session.getAttribute("uname");//根据键取得对应的值
	//判断
	if(name==null){
		//request.getRequestDispatcher("login.jsp").forward(request, response);
		response.sendRedirect("login.jsp");
	} else{
		
	
	//根据gid拿到对应的商品对象=查询单个
	int a=Integer.parseInt(gid);
	IGoodsBiz igb=new GoodsBiz();
	Goods g=igb.getGood(a);
	
	
	//订单项集合
	//①解决覆盖问题
	//先拿值
	List<Item> ls=(List<Item>)session.getAttribute("Item");
	if(ls==null){
		ls=new ArrayList<Item>();
	}
	//②解决加同一商品重复问题
	boolean f = false;//假设该商品不存在
	//循环遍历
	for(Item oi:ls){
		//说明存在
		if(oi.getG().getGid()==a){
			//数量在原有的基础上+1
			oi.setSl(oi.getSl()+1);
			oi.calc();//改变其总价
			f=true;
			break;
		}
	}
	if(f==false){//说明确实不存在
		//形成一个订单项
		Item i=new Item();
		//给对象赋值
		i.setG(g);
		i.setSl(1);
		i.calc();
		//把订单加到集合中
		ls.add(i);
	}
	//把集合存到session中
	session.setAttribute("Item", ls);
	//跳转到购物车界面进行展示
	
	request.getRequestDispatcher("cart.jsp").forward(request, response);
	}

session的删除:

request.setCharacterEncoding("utf-8");
	//接收gid
	String gid=request.getParameter("gid");
	//拿到订单项集合
	List<Item> ls=(List<Item>)session.getAttribute("Item");
	//循环遍历
	for(Item oi:ls){
		if(oi.getG().getGid()==Integer.parseInt(gid)){
			//说明找到了 移除掉
			ls.remove(oi);
			break;
		}
	}
	response.sendRedirect("cart.jsp");

session的修改:

request.setCharacterEncoding("utf-8");
	//接收gid和num
	String gid=request.getParameter("gid");
	String num=request.getParameter("num");
	//拿到订单项集合
	List<Item> ls=(List<Item>)session.getAttribute("Item");
	//循环遍历
	for(Item oi:ls){
		if(oi.getG().getGid()==Integer.parseInt(gid)){
			//说明找到了 改变其数量和价格
			oi.setSl(Integer.parseInt(num));
			oi.calc();
			break;
		}
	}
	response.sendRedirect("cart.jsp");

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值