Http是一个无状态协议
- HTTP协议本身是无状态的协议,一旦数据传输结束,就会断开客户端和服务器的而连接。但是在程序中,进行会话跟踪时十分有必要的。如客户端需要判断请求来自于哪个用户(Cookie) 以及 对用户的进行跟踪(Session),因而需要Cookie&Session来弥补HTTP协议本身无状态的缺点。
Cookie
Session
- Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
HttpSession session = request.getSession();
Object object = session.getAttribute("key");
session.setAttribute("key","value");
- Session生命周期
- Session在用户第一次访问服务器时自动创建,访问HTML、IMAGE等静态资源时不会生成session。
- Session生成后,用户访问时服务器会不断维护该Session。若长时间未访问,服务器会根据回收机制删除该Session。
Cookie和Session的区别
- Cookie数据存放在客户端(浏览器) & Session数据存放在服务器
- Session的运行依赖于SessionId,而SessionId存在Cookie中。若浏览器禁用了Cookie,Session也会失效,但是可以通过其他方式传递。
- Cookie可以进行会话跟踪、保存用户喜好或者保存用户名和密码 & Session用来跟踪会话&认证