Javaweb----cookie和session

http的一个特性:

超文本传输协议

无状态协议:每一个请求都是独立的,一旦数据交互完毕,客户端和服务端的连接就会关闭

是服务器给浏览器的一个好东西(甜点),保存在浏览器上,是弥补http无状态的缺点,所以它能在客户端保持http状态信息,然后此浏览器每次向服务器发送请求都会带着这个Cookie
默认生存时间:是会话级别的,如果要设置定时长,可以通过cookie.setMaxAge(time)

缺点:采用一个4k的文本存储,存储内容少。而且是可见的,缺乏安全性

Session

session机制是采用在服务器端保持HTTP状态信息的方案,是服务器端使用的一种记录客户端状态的机制,

生命周期

  1. request.getSession() --> 产生
  2. 过期时间到(30分钟),--->自动销毁invalidate
  3. 主动销毁request.getSession().invalidate(),------->一般用于注销用户登录
  4. 从服务器上卸载,或服务器关闭
    注意误区: 并不是浏览器访问服务器端的任意一个Jsp或Servlet,服务器就立即创建一个HttpSession对象,

在web.XML配置全局的时间

30

配置30分钟

作用

1.自动登录功能
2.购物车功能

缺点

保存在服务端的,如果并发访问的用户十分多,就会产生十分多的Session,耗费大量服务器内存,

对比

举一个例子感觉好理解一点:Cookie机制是通过检查客户身上的“通行证”来确定客户身份,那么session机制就是通过检查后台服务器上的“客户信息表”来确认客户身份,所以Session相当于程序在服务器上建立一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

存取方式不同,Cookie不能直接存取java对象,session可以存对象

我们可以看到我们随便写一个页面时,我们运行页面,在弹出的浏览器中F12,刷新可以看到,有一个Cookie:Jsessionid; 同一个会话(浏览器开启到关闭),页面每次发送请求都会带着这个id,服务器就会通过这个id(request.getSession().getId()可以看到)找到对应存在服务器端的Session(用于存储这个Cookie的信息的,默认保存时间是30分钟),

当浏览器禁用Cookie

利用URL重写跟踪Session

原文地址:https://www.cnblogs.com/liu-ya/p/9436522.html