日期:2014-05-18  浏览次数:20687 次

购物网站是如何一个个放入SESSION,又是如何一个个取出
//提交后转入SERVLET 
String shangp=request.getParameter("shangp"); 
String price=request.getParameter("price"); 
ArrayList <Shop_items> list=new ArrayList <Shop_items>(); 
Shop_items shitem=new Shop_items(); 
shitem.setShangp(shangp); 
shitem.setPrice(price); 
if(list.isEmpty()==true){ 
list.add(shitem); 

}else{ 
list.addAll(list); 


if(list==null||list.size() <=0){ 
response.sendRedirect("../fun/image_info.jsp"); 
}else{ 

HttpSession session=request.getSession(); 
session.setAttribute("list", list); 
response.sendRedirect("../fun/shopping.jsp"); 


//JSP取出,取出来只有一个,是不是放入SESSION的问题,请高手指点下 
  <%  
  try{ 
  ArrayList <Shop_items> list2=new ArrayList <Shop_items>(); 
  list2=(ArrayList)session.getAttribute("list"); 

  if(list2!=null){ 
  for(int i=0;i <list2.size();i++){ 
   
  %> 
  <TR> 
  <td align="center"> <%=list2.get(i).getShangp()%> </td> <td > <%=list2.get(i).getPrice()%> </td> 
  </TR> 
  <%} }}catch(Exception e){}%>

------解决方案--------------------
if(list.isEmpty()==true){ 
list.add(shitem); 

}else{ 
list.addAll(list); 


??
你这当然list里永远只有一个元素了???
你new 的list,if(list.isEmpty()==true这个条件当然成立了...你应该从session里获得list再往里边加元素
------解决方案--------------------
2楼的意思是,你每次添加商品,你都new了一个list,然后把当前商品添加进去了,然后你setAttribute的时候把这个list替换掉原来的list了,这样原来list里的信息都没有了,你应该先从session里把原来的list取出来,把它放在另一个变量里,然后add到新的list里再替换。
------解决方案--------------------
ArrayList <Shop_items> list=new ArrayList <Shop_items>(); 把这个改成下面就好了
Java code

ArrayList <Shop_items> list = (ArrayList <Shop_items>) session.getAttribute("list"); 
if(null == list)
   list=new ArrayList <Shop_items>();

------解决方案--------------------
探讨
ArrayList <Shop_items> list=new ArrayList <Shop_items>(); 把这个改成下面就好了
Java codeArrayList<Shop_items>list=(ArrayList<Shop_items>) session.getAttribute("list");if(null==list)
list=newArrayList<Shop_items>();