这一段代码什么意思,cookies的名字可以随便起的吗?那if(c.getName().equals("ListViewCookie")何时会不成立?
这一段代码什么意思,cookies的名字可以随便起的吗?那if(c.getName().equals("ListViewCookie")何时会不成立?
这一段代码什么意思,cookies的名字可以随便起的吗?那if(c.getName().equals("ListViewCookie")何时会不成立?
2015-09-18
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。
请问@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();取到的值肯定是数字形式的。
不知道这样想是不是对的,还望批评指正?
举报