当前位置: 代码迷 >> Java Web开发 >> Servlet Session 购物车解决办法
  详细解决方案

Servlet Session 购物车解决办法

热度:6148   发布时间:2013-02-25 21:07:26.0
Servlet Session 购物车
最近学到session,做了一个购物车练手,可以实现添加到购物车,但做删除的时候遇到了障碍,
共写了CartItem.java, ShoppingCart.java, addShoppingCartServlet.java, getShoppingCartServlet.java,四个类,其中
CartItem.java 负责物品的属性
ShoppingCart.java 负责购物车的添加和删除
两个Servlet类分别负责添加和显示,测试正常

这是ShoppingCart.java里的删除方法
public boolean removeItem(String id){
CartItem cartItem=null;
for(int i=0;i<cart.size();i++){
cartItem=cart.get(i);
if(cartItem.getId().equals(id)){
cart.remove(id);
return true;
}
}
return false;
}


删除的调用
out.println("<a href=\"/ShoppingCart/deleteServlet?id="+item.getId()+"\">刪除</a>");


这个是deleteServlet.java中的处理
HttpSession session=req.getSession();
ShoppingCart cart=(ShoppingCart)session.getAttribute("shoppingcart");
String id=req.getParameter("id");
if(cart!=null&&id!=null&&!"".equals(id)){
cart.removeItem(id);
out.println("刪除成功!");
}
else{
out.println("刪除失敗!");
}


在控制台测试删除方法返回的是true,但getShoppingCartServlet页面仍然为删除前的状态,当将另外一件物品添加到购物车时,购物车列表显示的是删除前的结果,求教原因
------最佳解决方案--------------------------------------------------------
LZ,删除完之后,你的重新把对象放入到session里面
,不然也没还是获取的原来的。
------其他解决方案--------------------------------------------------------
简单的说就是提示为删除成功,但页面没反应。
------其他解决方案--------------------------------------------------------
有遇到过相类似的情况的么,希望能指教下
------其他解决方案--------------------------------------------------------
这个是购物车的商品显示
for(int i=0;i<items.size();i++){
item=items.get(i);
out.println("<tr>");
out.println("<td>");
out.println(item.getName());
out.println("</td>");
out.println("<td>");
out.println(item.getPrice());
out.println("</td>");
out.println("<td>");
out.println(item.getQuantity());
out.println("</td>");
out.println("<td>");
out.println(item.getSum());
out.println("</td>");
out.println("<td>");
out.println("<a href=\"/ShoppingCart/deleteServlet?id="+item.getId()+"\">刪除</a>");
out.println("</td>");
out.println("</tr>");
}

------其他解决方案--------------------------------------------------------
删除了商品后要再次把对象放回session 不然session里面的对象 还是原来的  lz看看是不是这个问题
------其他解决方案--------------------------------------------------------
引用:
LZ,删除完之后,你的重新把对象放入到session里面
,不然也没还是获取的原来的。

这个试过了,还是无效
------其他解决方案--------------------------------------------------------
那我建议LZ自己debug模式多调试看看吧!
------其他解决方案--------------------------------------------------------
是这样的,你删除了只是这个对象中的内容。但是session中存在的是你之前的对象,所以你需要做这样一步操作session.setAttribute(attrName,attrValue),
HttpSession session=req.getSession();         ShoppingCart cart=(ShoppingCart)session.getAttribute("shoppingcart");         String id=req.getParameter("id");         if(cart!=null&&id!=null&&!"".equals(id)){             cart.removeItem(id);             out.println("刪除成功!");         }         else{             out.println("刪除失敗!");         } 
  相关解决方案