【整理】Session和Cookie的区别,关系和应用
String cookieName = “userID”;Cookie cookies[] = request.getCookies();if (cookies!=null){ for(int i=0;i<cookies.length;i++) { Cookie cookie = cookies[i]; if (cookieName.equals(cookie.getName())) doSomethingWith(cookie.getValue()); }}
3.5 如何使用cookie检测初访者
A.调用HttpServletRequest.getCookies()获取Cookie数组
B.在循环中检索指定名字的cookie是否存在以及对应的值是否正确
C.如果是则退出循环并设置区别标识
D.根据区别标识判断用户是否为初访者从而进行不同的操作
3.6 使用cookie检测初访者的常见错误
不能仅仅因为cookie数组中不存在在特定的数据项就认为用户是个初访者。如果cookie数组为null,客户可能是一个初访者,也可能是由于用户将cookie删除或禁用造成的结果。
但是,如果数组非null,也不过是显示客户曾经到过你的网站或域,并不能说明他们曾经访问过你的servlet。其它servlet、JSP页面以及非Java Web应用都可以设置cookie,依据路径的设置,其中的任何cookie都有可能返回给用户的浏览器。
正确的做法是判断cookie数组是否为空且是否存在指定的Cookie对象且值正确。
3.7 使用cookie属性的注意问题
属性是从服务器发送到浏览器的报头的一部分;但它们不属于由浏览器返回给服务器的报头。
因此除了名称和值之外,cookie属性只适用于从服务器输出到客户端的cookie;服务器端来自于浏览器的cookie并没有设置这些属性。
因而不要期望通过request.getCookies得到的cookie中可以使用这个属性。这意味着,你不能仅仅通过设置cookie的最大时效,发出它,在随后的输入数组中查找适当的cookie,读取它的值,修改它并将它存回Cookie,从而实现不断改变的cookie值。
3.8 如何使用cookie记录各个用户的访问计数
1) 获取cookie数组中专门用于统计用户访问次数的cookie的值
2) 将值转换成int型
3) 将值加1并用原来的名称重新创建一个Cookie对象
4) 重新设置最大时效
5) 将新的cookie输出
3.9 会话跟踪的基本步骤
1) 访问与当前请求相关的会话对象
2) 查找与会话相关的信息
3) 存储会话信息
4) 废弃会话数据
3.10 getSession()/getSession(true)、getSession(false)的区别
getSession()/getSession(true):当session存在时返回该session,否则新建一个session并返回该对象。
getSession(false):当session存在时返回该session,否则不会新建session,返回null。