欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【JSP篇】——cookie之商品浏览记录的实现:5.cookie实现前五条浏览记录

程序员文章站 2022-05-15 17:17:09
...

                                                     学习上一节: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.效果

【JSP篇】——cookie之商品浏览记录的实现:5.cookie实现前五条浏览记录

布局没有写好,弄成这个鬼样子了,但是功能是没有错的。

ok,使用cookie显示商品的浏览记录就做完了。

在此献上工程的完整代码


相关标签: cookie