Cookie
在客户端保持http状态信息的方案,会话跟踪。是一个实际存在的东西,http 协议中定义在 header 中的字段。
- 默认情况下,cookie是会话级别,存储在浏览器内存中(cookie存储的数量和字符数量都有限制,只能存储几十个,不超4096左右个字符),用户退出浏览器之后被删除,若希望将cookie存储在磁盘上,则要使用maxage,并给一个以秒为单位,表示cookie存活时间。
- Cookie作用范围:可以作用当前目录和当前子目录,但不能最用于当前目录的上一级。
- HTTP协议是无状态的协议,就是说服务器无法识别那些请求是同一个浏览器发的,浏览器的每一次请求都是完全独立的。
有了cookie情况就不同了:
②过程在Jsp中:
<%1.创建一个cookie对象
Cookie cookie=new Cookie("name","jhb");
2.调用response的一个方法把cookie传输给客户端
Response.addCookie(cookie);
%>
Session
在服务器保持http状态信息,是一种抽象概念,是借助 cookie 本身和后端存储实现的,一种更高级的会话状态实现。
- 关闭浏览器不会使服务器端的session对象失效。
- session的实现要借助cookie来发送sessionID用于标识用户,并且跟踪用户。但如果客户端的浏览器禁用了 Cookie ,也可以通过URL后面被附加上的一个诸如 sid=xxxxx 这样的参数来传送。
- session比较安全,数据可以保存在服务器端集群、数据库、文件中(后端存储),但是可能需要记录千百万用户的信息,对服务器的存储压力很大。