【JSP篇】——cookie之商品瀏覽記錄的實現:5.cookie實現前五條瀏覽記錄

                                                     學習上一節:4.顯示商品的詳細信息的實現

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顯示商品的瀏覽記錄就做完了。

在此獻上工程的完整代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章