1.工程說明
首先,我們要思考在哪個地方將我們的信息保存到cookie對象中呢,毫無疑問,當然是用戶點擊商品的時候,我們要將我們的商品信息保存到cookie中。在前面我們在頁面跳轉的時候,將我們是商品的id進行傳遞,這個id就是我們當前瀏覽商品的信息編號,所以我們就可以把我們的這個id保存到客戶端上。
如此,我們的客戶端中有一個cookie對象,保存了用戶瀏覽商品的id們,我們便可以獲取這個cookie對象的內容,然後得到前5條id,通過id將我們的商品顯示出來。
好啦,思路已經很明確了,接下來我們就一步一步去實現它。
2.保存cookie對象
獲取當前商品信息的id,然後獲取cookie中保存的id們,將它們合併,再次保存到客戶端中。
其中,list就是我們要用到的,用於顯示當前的瀏覽信息。
具體如下:
<%
String list="";
//從客戶端獲取cookie集合
Cookie[] cookies=request.getCookies();
//遍歷集合,找到我們要的listViewCookie
if(cookies!=null&&cookies.length>0)
{
for(Cookie c:cookies)
{
//c.getName()=="listViewCookie" 不能這麼寫!!!
if(c.getName().equals("listViewCookie"))
{
System.out.println("我從客戶端找到了cookie!");
list=c.getValue();
}
}
}
//將當前的id追加到以前的cookie中
list+=request.getParameter("id")+",";
//如果瀏覽記錄超過1000條,我們清零
String[] arr=list.split(",");
if(arr!=null && arr.length>0)
{
if(arr.length>=1000)
{
System.out.println("這裏將list清零了!");
list="";
}
}
//最後添加到我們的cookie中
Cookie cookieListView=new Cookie("listViewCookie",list);
response.addCookie(cookieListView);
%>
3.從服務器獲取商品信息
list保存我們要用到的信息,由代碼我們可以看見,它是由“,”作爲分割,那麼我們應該獲取list中的id們,取出前五條id。
//獲取最近瀏覽的前五條商品信息
public ArrayList<Good> getViewList(String list)
{
//在控制檯輸出一下我們的list:測試用
System.out.println("list:"+list);
//返回的結果集
ArrayList<Good> itemlist = new ArrayList<Good>();
//每次返回前五條記錄
int iCount=5;
if(list!=null&&list.length()>0)
{
String[] arr = list.split(",");
System.out.println("arr.length="+arr.length);
//如果商品記錄大於等於5條
if(arr.length>=5)
{
for(int i=arr.length-1;i>=arr.length-iCount;i--)
{
System.out.println("當前list的數字:"+arr[i]);
itemlist.add(getGoodById(Integer.parseInt(arr[i])));
}
}
else
{
for(int i=arr.length-1;i>=0;i--)
{
System.out.println("當前list的數字:"+arr[i]);
itemlist.add(getGoodById(Integer.parseInt(arr[i])));
}
}
return itemlist;
}
else
{
return null;
}
}
這樣我們將list分解,又根據id從數據庫中獲取記錄,記錄保存在一個ArrayList 對象中。然後在我們的頁面顯示信息:
<%
GoodDao daoCookie=new GoodDao();
ArrayList<Good> arrGood=daoCookie.getViewList(list);
if(arrGood!=null && arrGood.size()>0 )
{
for(int i=0;i<arrGood.size();i++)
{
Good currentGood=arrGood.get(i);
%>
<!-- 循環開始的地方 -->
<div class="prod_box">
<div class="top_prod_box"></div>
<div class="center_prod_box">
<div class="product_title"><a href="details.jsp?id=<%=currentGood.getId() %>"><%=currentGood.getName() %></a></div>
<div class="product_img"><a href="details.jsp?id=<%=currentGood.getId() %>">
<img src="images/<%=currentGood.getImage() %>" alt="" title="" border="0" /></a></div>
<div class="prod_price"> <span class="price"><%=currentGood.getPrice() %>$</span></div>
</div>
<div class="bottom_prod_box"></div>
<div class="prod_details_tab">
<a href="#" title="header=[Add to cart] body=[ ] fade=[on]"><img src="images/cart.gif" alt="" title="" border="0" class="left_bt" /></a>
<a href="#" title="header=[Specials] body=[ ] fade=[on]"><img src="images/favs.gif" alt="" title="" border="0" class="left_bt" /></a>
<a href="#" title="header=[Gifts] body=[ ] fade=[on]"><img src="images/favorites.gif" alt="" title="" border="0" class="left_bt" /></a>
<a href="details.jsp?id=<%=currentGood.getId() %>" class="prod_details">詳情</a>
</div>
</div>
<%
}
}
%>
4.效果
佈局沒有寫好,弄成這個鬼樣子了,但是功能是沒有錯的。
ok,使用cookie顯示商品的瀏覽記錄就做完了。