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设置 用户在多少时间免登录;
现在的几乎什么都不懂,但是不代表以后的我也是这样。