Servlet之Cookie

*一个Cookie只能标识一种信息,它至少含有一个标识信息的名称(name)和设置值(value)
*如果创建了一个Cookie,并将它发送到浏览器,默认情况下他是一个会话级别的
    Cookie(即储存在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该Cookie储存在磁盘上,则需要
    使用MaxAge,并给出一个以秒为单位的时间。为零的时候则是命令浏览器删除该Cookie(注意在删除cookie的时候,
    path必须保持一致,否则不会删除).
*案例:显示每次的访问时间    
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        Cookie cookies[]=request.getCookies();
        for(int i=0;cookies!=null&&i<cookies.length;i++){
            if(cookies[i].getName().equals("lastAccessTime")){
                long value=Long.parseLong(cookies[i].getValue());
                Date date=new Date(value);
                out.println("您上次访问的时间是:"+date.toLocaleString());
            }
            
        }
        
        Cookie cookie=new Cookie("lastAccessTime",System.currentTimeMillis()+"");
        cookie.setMaxAge(3600*24*30);//一个月
        cookie.setPath("/day_07");//
        response.addCookie(cookie);
案例:应用cookie显示访问商品的记录(假设最大显示数为3)
//cookie的值部分:
    public String getCookies(String id,HttpServletRequest request){
            String value=null;
            Cookie[] cookies=request.getCookies();
            for(int i=0;cookies!=null&&i<cookies.length;i++){
                if(cookies[i].getName().equals("lookShopping")){
                    value=cookies[i].getValue();
                }
            }
            //没有浏览记录
            if(value==null){
                return id;
            }
            LinkedList<String> list=new LinkedList(Arrays.asList(value.split("\\,")));
            //有浏览记录
            if(list.contains(id)){//如果已经浏览过该商品
                list.remove(id);
                list.addFirst(id);
            }
            else{//没有浏览过该商品
                if(list.size()>=3){//已经到了保存的最大数
                    list.removeLast();
                    list.addFirst(id);
                }
                else{//没有到了保存cookie的最大数
                    list.addFirst(id);
                }
            }
            //小技巧:在上边会发现,每次就会将addFirst(id),可以简化代码,写到最后边
            
            StringBuffer sb=new StringBuffer();
            for(String e: list){
                sb.append(e+",");
            }
            return value=sb.deleteCharAt(sb.length()-1).toString();
    }
Cookie设置 用户在多少时间免登录;

 

posted @ 2016-04-18 12:40  戒。  阅读(305)  评论(0编辑  收藏  举报