Cookies
Posted 上后谈爱情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookies相关的知识,希望对你有一定的参考价值。
1.HTTP 协议无状态协议,无法识别来自于同一个请求的识别,作为WEB服务器,必须采用一种机制唯一标识一个用户
2.会话:WEB和客户端之间一系列的请求和响应过程,Servlet规范中,常用两种机制完成会话跟踪:Cookies和Seesion
1.问题一:WEb服务器如何知道请求消息来自同一个客户端:
需要浏览器对其发生的每一个请求消息进行标识,同一个会话的请求消息有相同的标识(Seesion ID)
3.Cookie机制:客户端保持HTTP状态信息方案,
2).简单的GET请求,在响应信息头中发现了Cookie,再一次请求过程中发现了自动的加入SetCookie,还有第一次请求时候没有Cookie头,再一次访问浏览器自动加入Cookie
1// 简单的Cookie表示 2 //获取Cookies 3 Cookie []cookies=request.getCookies(); 4 if(cookies!=null && cookies.length>0) 5 { 6 for(Cookie cook:cookies) 7 { 8 out.print(cook.getName()+":"+cook.getValue()); 9 out.print("<br>"); 10 } 11 } 12 else 13 { 14 out.print("没有一个cookie,创建一个cookie,并且返回"); 15 Cookie cookie=new Cookie("name","jerry"); 16 response.addCookie(cookie); 17 }
3).会话级别Cookie,默认情况没有设置setMaxAge时候,用户退出浏览器会自动的删除cookie;0时候表示快速被删除
会话Cookie和持久Cookie区别:
5.使用Cookie进行自动登录设置
1.获取登录参数信息,并且把登录信息存储到cookie中设置最大时效30S
2.从cookie读取用户信息,并且打印欢迎信息
3.没有请求参数和登录信息重定向到login.jsp
6.利用cookies 显示最近需要看过的东西
最重要是在删除部分 ;第一种情况是 数量大于5并且新加入的书籍并没有出现过删除第一个Cookie进行,第二种情形:Update更新,加入书籍存在于原来的Cookies数组,现在讲原有删除,在末尾加入现有的书籍,相当于将原来位置移动到末尾。
1 // 1. 确定被删除的Cookie是哪个---前提是ATUG_Book开头的Cookie,m每添加一件商品会在cookies数组中增加一条Cookie 2 // 所有getCookies是一个数组 3 String book=request.getParameter("book"); 4 5 List<Cookie> list=new ArrayList<Cookie>(); 6 7 Cookie tempCook=null; 8 Cookie [] cookies=request.getCookies(); 9 if(cookies!=null && cookies.length>0) 10 { 11 for(Cookie bcookie:cookies) 12 { 13 String bookName=bcookie.getName(); 14 if(bookName.startsWith("ATUG_Book")) 15 { 16 list.add(bcookie); 17 18 if(bcookie.getValue().equals(book)) 19 {//判断book是否已经存入原来的Cookie中 20 tempCook=bcookie; 21 } 22 } 23 } 24 } 25 26 // 删除第一种情形,删除数量大于5并且之前记录中没有出现的 27 if(list.size()>=5 && tempCook==null) 28 { 29 tempCook=list.get(0); 30 } 31 32 // 删除第二种情形:并且之前出现过相当于更新 33 if(tempCook!=null ) 34 { 35 tempCook.setMaxAge(0); 36 response.addCookie(tempCook); 37 } 38 // 2.将从books传入的的book更新完了之后作为一个新的cookie 返回 39 40 Cookie cookie=new Cookie("ATUG_Book"+book,book); 41 response.addCookie(cookie);
CookiePath:只能作用于当前目录和其子目录,不能作用于其上一级目录
向作用上一级目录使用setPath(request.getContextPath()--等于当前项目目录(/TomCat))
/ 表示当前站点根目录,
以上是关于Cookies的主要内容,如果未能解决你的问题,请参考以下文章