这一段代码什么意思,cookies的名字可以随便起的吗?那if(c.getName().equals("ListViewCookie")何时会不成立?

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

鲜衣

2015-09-18 23:08

这一段代码什么意思,cookies的名字可以随便起的吗?那if(c.getName().equals("ListViewCookie")何时会不成立?

写回答 关注

3回答

  • 好帮手慕珊
    2015-09-19 18:28:12
    已采纳

    String list="";
    Cookie[] cookies=request.getCookies();  //获取当前的cookie值
    for(Cookie c:cookies){                                //循环遍历所有cookie
    if(c.getName().equals("ListViewCookie")){  //判断现有的cookie是否有名为ListViewCookie的,如果有
    list=c.getValue();            //用c.getValue()取出来

    }
    }
    list+=request.getParameter("id")+",";    //如果之前的cookie列表中没有名为ListViewCookie的cookie,则此时list是为空的,那么就获取商品的id号,加到list中。如果list不为空,那么list中存储的就是之前的浏览记录,那么这条语句就是在原来浏览记录的基础上,再加入新的商品id,这样保证list中永远是所有的浏览记录。后面的代码就是超过1000条后清零。

    最后,Cookie cookie=new Coolie("ListViewCookie",list);这条语句,就是将商品浏览记录中商品的id,也就是list添加到cookie。

    可能你理解是先加cookie才能判断, 这里不是,这里是先 判断cookie是否存在,然后做一系列处理,最后才是添加cookie。          

    鲜衣

    非常感谢你!

    2015-09-21 10:13:18

    共 3 条回复 >

  • 鲜衣
    2015-09-19 16:57:11

    请问@pang,我的理解是:

    for(Cookie c:cookies){
    if(c.getName().equals("ListViewCookie")){
    list=c.getValue();
    }
    }

    这一步将最后一个(也是最新一个cookie的值取出来,比如这个值是a,然后通过

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

    这时候list的最终值是list=a1, ;

    在ItemDAO类取出的时候:

    public ArrayList<Items> getViewList(String list){
    ArrayList<Items> itemlist=new ArrayList<Items>();
    if(list!=null&&list.length()>0){
    String[] arr = list.split(",");
    int iCount=5;
    if(arr.length>5){
    for(int i=arr.length;i>=arr.length-iCount;i--){
    itemlist.add(getItemsById(Integer.parseInt(arr[i])));
    }
    }else{。。。。。

    这一句话itemlist.add(getItemsById(Integer.parseInt(arr[i])));是不是表明arr[i]的值是一个数字形式的?

    那么list=c.getValue();取到的值肯定是数字形式的。

    不知道这样想是不是对的,还望批评指正?


    好帮手慕珊

    这一句话itemlist.add(getItemsById(Integer.parseInt(arr[i]))); c.getValue()取出来的值是什么形式和arr[i]的值无关,getValue()方法的返回值就是String类型的。

    2015-09-19 18:33:03

    共 1 条回复 >

  • 好帮手慕珊
    2015-09-19 10:54:04

    cookie的名字可以随便起,如果没有name为ListViewCookie的cookie时,if语句就不成立了

    鲜衣

    你好,谢谢你!我看前后文都没有为Cookie命名,请问LisViewCookie是如何出现的呢? 还有一个问题就是请问list的赋值过程是怎么样的呢? String list=""; Cookie[] cookies=request.getCookies(); for(Cookie c:cookies){ if(c.getName().equals("ListViewCookie")){ list=c.getValue(); } } list+=request.getParameter("id")+",";

    2015-09-19 16:33:10

    共 1 条回复 >

JAVA遇见HTML——JSP篇

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

248278 学习 · 3071 问题

查看课程

相似问题