想用jsp做一个购物车,我用想把每次点击的想要购买的商品放进一个Arraylist当中,但是当我点击下一个商品的时候,就把前面的商品给覆盖了,不知道如何实现不同商品累加在Arraylist中,我的代码是:
(1)viewProduct.jsp //浏览商品
<c:forEach var="vc" items="${pc.sList}">
<table border="0" align="left">
<tr>
<td align="right">内存:</td>
<td align="left"> <c:out value="${vc.memory}"/></td>
<td > <a href='viewProductDetails.jsp?paramm=${vc.productId}'>查看详情a> </td>
<td > <a href='addToCart.jsp?paramm=${vc.productId}'放入购物车<a> </td>
</tr>
</table>
</c:forEach>(2)addToCart.jsp //添加至购物车
<body>
<%
String productId=request.getParameter("paramm");
Object o=session.getAttribute("cart");
CartManager cart=null;
if(o==null)
cart=new CartManager();
else
cart=(CartManager)o;
cart.addGoods(productId);
ArrayList clist=cart.getList();
request.getSession().setAttribute("clist",clist);
session.setMaxInactiveInterval(1800);
response.sendRedirect("allProduct.jsp");
%>
请问如何解决呢?谢谢指教!!
(1)viewProduct.jsp //浏览商品
<c:forEach var="vc" items="${pc.sList}">
<table border="0" align="left">
<tr>
<td align="right">内存:</td>
<td align="left"> <c:out value="${vc.memory}"/></td>
<td > <a href='viewProductDetails.jsp?paramm=${vc.productId}'>查看详情a> </td>
<td > <a href='addToCart.jsp?paramm=${vc.productId}'放入购物车<a> </td>
</tr>
</table>
</c:forEach>(2)addToCart.jsp //添加至购物车
<body>
<%
String productId=request.getParameter("paramm");
Object o=session.getAttribute("cart");
CartManager cart=null;
if(o==null)
cart=new CartManager();
else
cart=(CartManager)o;
cart.addGoods(productId);
ArrayList clist=cart.getList();
request.getSession().setAttribute("clist",clist);
session.setMaxInactiveInterval(1800);
response.sendRedirect("allProduct.jsp");
%>
请问如何解决呢?谢谢指教!!
String productId=request.getParameter("paramm");
Object o=session.getAttribute("cart");
CartManager cart=null;
if(o==null){
cart=new CartManager();
// 至少这个新的得保存一下吧,否额下次你从哪里得到呢?
session.setAttribute("cart",o);
}else{
cart=(CartManager)o;
}你不保存,每次拿到的都是null, 所以每次都new 一个新的出来了。
建议用map操作把map放在session中再从map中获得对象(键值对)
用map修改的时候比list可方便多了