笔记:
一、点击加入购物车表示层
<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");