一、商品的展示
---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() %>">删除 </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;
}