<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<body>
<form action=" handleSessionLost.jsp" method="post">
请您输入书本:<input name="book" type="text">
<input type="submit" value="添加到购物车">
</form>
<HR>
<%
//从session获取books,如果为空则实例化
ArrayList books = (ArrayList)session.getAttribute("books");
if(books==null){
books = new ArrayList();
session.setAttribute("books",books);
}
//获得书名
String book = request.getParameter("book");
if(book!=null){
book = new String(book.getBytes("ISO-8859-1"));
//将book加进去
books.add(book);
}
%>
购物车中的内容是:<BR>
<%
//遍历books
for(int i=0;i<books.size();i++){
out.println(books.get(i) + "<BR>");
}
%>
</body>
</html>
这段代码有意思在就在于判断这里,为什么这么说呢。因为为了是实现购物车的功能,就需要在一个集合里面不断地添加元素,同时也应该防止实例化新集合,所以呢。就需要一个if判断
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//从session获取books,如果为空则实例化 ArrayList books = (ArrayList)session.getAttribute("books"); if(books==null){ books = new ArrayList(); session.setAttribute("books",books); }
这段代码,可以成为核心代码,因为具体解释:
//从session获取books,如果为空则实例化 ArrayList books = (ArrayList)session.getAttribute("books");
这一句是说:因为对于是否是第一次建立cookie还是许多次以后这两种情况不是很有把我确定,所以呢干脆就直接先获取一个cookie 的name值,如果可以找到,说明不是第一次建立cookie,下面的if语句块就不走了,如果是第一次建立cookie,则有下面的if语句块,
if(books==null){ books = new ArrayList(); session.setAttribute("books",books); }
解释:因为如果第一次建立cookie的话,那么book肯定是null:所以,就实例化Arrlist;并且set下books;