首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Servlet Session 购物车解决办法

2012-12-15 
Servlet Session 购物车最近学到session,做了一个购物车练手,可以实现添加到购物车,但做删除的时候遇到了

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("刪除失敗!");         }  



上述代码中,只看见你往cart对象中去放内容,没有见到你把这个对象在放回session中。

说到这里,我不知道cart对象是不是不需要set到到session中就直接放进去了。  sorry,我技术也不行,我只是提出我的疑问而已。

热点排行