cookie的问题

来源:8-8 使用Cookie实现保存商品浏览记录

qq_lzY

2016-11-07 08:57

 <%
              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);
          
          %>


明明listviewCookie是后面才创建的,但在前面就引用,这样可以么,代码执行顺序不是从上到下?还是因为先编译完了,对象都加载完了,所以调用没关系?不是很清楚。

写回答 关注

2回答

  • 神秘陌生人
    2016-11-08 00:53:35
    已采纳

        当你用浏览器请求某个服务器时,浏览器会将该服务器存放在本地的cookie(可能有,也可能没有,这是你判断cookies是否为null以及长度是否大于0的原因)放入请求中,而listviewCookie是一段字符串,是其中一个cookie名称。如果你之前存放在本地的cookie中有叫这个名称的cookie,那么就能取到这个cookie(就是你遍历cookie中equals判断的原因)。所以listviewCookie并不是后面才创建的,而是来自你浏览存放在本地的cookie中的,可能存在也可能不存在,如果存在的话,服务器收到浏览器的请求时,就会在这次请求对应的request对象中创建此cookie(名称为listviewCookie)。

        你后面的代码:Cookie cookie = new Cookie("ListViewCookie",list);是创建了一个新的cookie对象,这个cookie名称为ListViewCookie,值为list。将这个cookie对象放入response对象后,浏览器获得服务器的响应后,将从response中获取这个cookie并将它存放在本地(如果之前有来自该服务器并且也叫这个名称的cookie则会覆盖之前的)。当你再次访问这个服务器的时候,就会将该服务器存放在本地的cookie放入请求中发送至服务器(这里就可以接到上一段开始了)。

        表达无力,不好意思。

    qq_lzY

    非常感谢!

    2016-11-08 07:38:59

    共 1 条回复 >

  • qq_与赠_03193390
    2017-10-02 12:32:37

    简单点说 就是当你第一次点击商品的时候还没有一个键值名为listviewcookie的cookie对象(这也是设计的核心所在,因为当你在创建一个listviewcookie的cookie对象时它会覆盖你之前的名为listviewcookie的cookie对象的值从而实现字符串追加的目的并将他保存在cookie中),所以会跳过判断,执行list追加字符串后的语句

JAVA遇见HTML——JSP篇

Java Web入门级教程JSP,带你轻松的学习JSP基础知识

248278 学习 · 3071 问题

查看课程

相似问题

cookie问题

回答 1

Cookie问题

回答 1

cookie 问题

回答 5

Cookie问题

回答 3

cookie问题

回答 1