JavaWeb13(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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值