为了账号安全,请及时绑定邮箱和手机立即绑定

为什么第一次点击商品详情的时候就会有这次浏览的记录呢?

String list ="";

             

              //从客户端获得Cookies集合

              Cookie[] cookies = request.getCookies();

              //遍历这个Cookies集合

              if(cookies!=null&&cookies.length>0)

              {

             for(Cookie c:cookies)

             {

                 if(c.getName().equals("ListViewCookie"))

                 {

                    list = c.getValue();

                 }

             }

         }

              

              list+=request.getParameter("id")+",";

              //如果浏览记录超过1000条,清零.

              String[] arr = list.split(",");

              if(arr!=null&&arr.length>0)

              {

                  if(arr.length>=1000)

                  {

                      list="";

                  }

              }

              Cookie cookie = new Cookie("ListViewCookie",list);

              response.addCookie(cookie);

按照这代码的执行顺序 第一次点击时list应该是为空的呀,为什么就会有这次的浏览记录呢

正在回答

2 回答

我来解释下:

              String list ="";
              //从客户端获得Cookies集合
              Cookie[] cookies = request.getCookies();
              //遍历这个Cookies集合
              
              if(cookies!=null&&cookies.length>0)
              {
                  for(Cookie c:cookies)
                  {
                      if(c.getName().equals("ListViewCookie"))
                      {
                         list = c.getValue();
                      }
                  }
              }
              
              list+=request.getParameter("id")+",";


看到这里的  list+=request.getParameter("id")+",";    代码没有。 这句话的意思是,先把你当前浏览的页面ID加入进list中,同时,

              String[] arr = list.split(",");
              if(arr!=null&&arr.length>0)
              {
                  if(arr.length>=1000)
                  {
                      list="";
                  }
              }
              Cookie cookie = new Cookie("ListViewCookie",list);
              response.addCookie(cookie);

中的 response.addCookie(cookie); 已经把它写入cookie了。所以,接下来的:

              Cookie cookie = new Cookie("ListViewCookie",list);
              response.addCookie(cookie);
          
          %>
          <!-- 浏览过的商品 -->
          <td width="30%" bgcolor="#EEE" align="center">
             <br>
             <b>您浏览过的商品</b><br>
             <!-- 循环开始 -->
             <%
                ArrayList<Items> itemlist = itemDao.getViewList(list);
                if(itemlist!=null&&itemlist.size()>0 )
                {
                   System.out.println("itemlist.size="+itemlist.size());
                   for(Items i:itemlist)
                   {
                         
             %>


这句代码就开始将cookie遍历,但是,cookie在之前已经写入id了,所以浏览记录显示是晚于cookie写入的。

这句是原因,不知道你看懂了没有。

0 回复 有任何疑惑可以回复我~
#1

一只土豆 提问者

谢谢!
2015-12-28 回复 有任何疑惑可以回复我~

遍历的时候,从倒数第二个开始就好了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么第一次点击商品详情的时候就会有这次浏览的记录呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信