壮态管理
当用户在发送一个请求关得到返回信息之后,客户端与服务器端之间的网络连接就已经
断开了,在下一个请求发送时,服务器无法确定这次请求和上次的请求是否来自同一个客
户端。也就是说,服务器不能记住"记住"用户,这是hptp协议的限制。在web应用程序中,
实际上是经常需要记住每次请求的。那么,如何让服务器知道不同的请求是否来自同一个
客户端,就是状态管理问题出现了session和cookie。
状态管理
分为客户端和服务器端
服务器端:状态信息保存在服务器端,session (其它:Application,HttpContext,Cache)
客户端:状态信息保存在客户端,cookie (QueryString,ViewState,ControlState,隐藏域)
当客户端向服务器发送请求时,状态信息也随之发送到服务端,从而起到验证客户端来路的目的。
客户端状态不如服务器端的安全性和可靠性高,但服务器端状态会占用服务器端资源,影
响服务器性能。
Session session超过之前 数据大小不限,建议数据尽量少
cookie 可编程控制 数据受cookie大小限制
会话cookie和持久cookie的区别
如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
如何使用cookie记录各个用户的访问计数
1.获取cookie数组中专门用于统计用户访问次数的cookie的值
2.将值转换成int型
3.将值加1并用原来的名称重新创建一个Cookie对象
4.重新设置最大时效
5.将新的cookie输出
session何时被删除
session在下列情况下被删除:
A.程序调用HttpSession.invalidate()
B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间
C.服务器进程被停止
cookie和session对象的生命周期是一样的吗
当用户关闭了浏览器虽然session cookie已经消失,但session对象仍然保存在服务器端
关闭浏览器,只会是浏览器端内存里的session cookie消失,但不会使保存在服务器端的session对象消失,同样也不会使已经保存到硬盘上的持久化cookie消失。