JSP中session对象的问题 急 在线等!

锋的潜力 发布于 2016/09/27 22:37
阅读 196
收藏 0
NewFile.jsp


<body>
<% //未解决不能记录购买%>
<form action="MyJsp.jsp" method="post">
<center>请选择要购买的商品<br>
<input type="checkbox" name="checkbox" value="bread">面包     价格:04元<br>
<input type="checkbox" name="checkbox" value="grape">葡萄  价格:12元<br>
<input type="checkbox" name="checkbox" value="apple">苹果 价格:03元<br>
<input type="checkbox" name="checkbox" value="banana">香蕉  价格:01元<br>
<input type="checkbox" name="checkbox" value="cabbage" >白菜   价格:01元<br>
<input type="submit" value="提交"/> <input type="reset" value="重置"/>
</center>








</form>
</body>






MyJsp.jsp


 <%
  String get_select[]=request.getParameterValues("checkbox");
  ArrayList<String> deliver=new ArrayList<String>();
 
   %>
  <%
  if(get_select==null){
  
  response.sendRedirect("NewFile.jsp");  
  }




  if((ArrayList)session.getAttribute("list1")==null){
  deliver=new ArrayList<String>();
  }
  else{
  deliver=((ArrayList)session.getAttribute("list1"));
}
for(int i=0;i<get_select.length;i++){


deliver.add(get_select[i]);
}
session.setAttribute("list1", deliver);




//ArrayList<String> list2=(ArrayList)session.getAttribute("list1");




   %>
   




  
  




 <body>
  <center>
  <form action="MyJsp1.jsp" method="post">
您刚才选择的商品是:
<%=deliver%><br>


<input type="button" onclick="window.location.href='NewFile.jsp';" value="继续购买"/>
<input type="submit" value="结账"/>
</form>
</center>
  </body>


MyJsp1.js  </head>
  <% 
  ArrayList<String> list= new ArrayList<String>();
  list = (ArrayList)session.getAttribute("list1");
 %>
  <body>
  <center>您购买的商品如下:
  <br><%=list%>
  <br>
  <a href="NewFile.jsp">返回主页</a>
  <%
  list.clear();
  %>
  <%
  ArrayList<String> hhh=(ArrayList)session.getAttribute("list1");
  
  %>
  <br><%=hhh%>
  
  </center>
<br>
  </body>






为什么我把list清除掉了 session里面的list1也没了?










?
加载中
0
Martin_Luo
Martin_Luo

虽然你声明使用了新的实例 new ArrayList<String>();;但紧接着你又让list引用了session中的list1;这list实际指向了list1,当你调用list.clear(),实际为list1.clear();

如果要收回list的资源,你可以采用list = null的方式收回;

Martin_Luo
Martin_Luo
回复 @锋的潜力 : 对象及对象引用你可以看看这篇文章:http://tianhei.iteye.com/blog/828247
Martin_Luo
Martin_Luo
回复 @锋的潜力 : “赋”值:其中赋这个词的含义你没弄明白;计算机一般会有两种处理1:定义变量指向对象,变量引用了对象,没有开辟单独的内存空间;引用类似C里的指针。 2:定义一个变量,指向对象复制拷贝,; list = (ArrayList)session.getAttribute("list1");,这种写法实际就 是采取的第一种原理。
锋的潜力
我那样写不是只是从session里面取出list1然后赋给list吗
0
喂码呢
喂码呢
list和list1指向的是同一个数组,你清空了list,自然list1也被清空了
喂码呢
喂码呢
回复 @锋的潜力 : 不是的,java中方法返回类型如果是对象的话,那么调用方法返回的就是这个对象的引用,看看Java api文档关于HttpSession.getAttribute()方法的描述也能有助于理解
锋的潜力
我那样写不是只是从session里面取出list1然后赋给list吗
返回顶部
顶部