Cookie与Session的作用于原理
会话跟踪是Web程序中常见的技术,用于跟踪用户的整个会话。常见的会话跟踪技术有Cookie和会话。Cookie通过在客户端记录信息来确定用户的身份,而Session通过在服务器上记录信息来确定用户的身份。Cookie
Cookie实际上是一小段文本信息。请求客户端服务器,如果服务器需要记录用户状态,生成一个用户ID,然后在响应消息中以Cookie的形式将ID号传递给浏览器。客户端浏览器将保存Cookie。以后每次浏览器访问web服务器时,浏览器都会将请求的网址和Cookie一起提交给服务器。服务器检查Cookie以识别用户状态。服务器还可以根据需要修改cookies的内容。浏览器不能共享Cookies。
Cookies不能跨域名。比如访问谷歌的浏览器只会携带谷歌cookie,不会携带百度cookie。Cookie的最大年龄决定了Cookie的有效期,单位为秒。
默认情况下,cookie是一个会话级别的,用户退出浏览器后被删除
Session
会话是记录客户状态的另一种机制。区别在于Cookie存储在客户端浏览器中,而会话存储在服务器上。当客户端浏览器访问服务器时,服务器以某种形式将客户端信息记录在服务器上。这就是会议。
如果Cookie机制通过检查客户的“护照”来确定客户的身份,那么Session机制通过检查服务器上的“客户列表”来确认客户的身份。会话相当于服务器上程序创建的客户文件。客户来访时,只需查询客户档案表。
会话保存在服务器端。为了获得更高的访问速度,服务器通常将会话放在内存中。每个用户都有一个独立的会话。如果Session的内容过于复杂,可能会在大量客户访问服务器时导致内存溢出。因此,会议中的信息应尽可能简洁。
session工作原理
(1)当客户端开始访问时,web不会创建会话。当访问一个特殊的程序,并且程序(servlet)决定打开与客户端的会话时,服务器将生成一个唯一的值,称为会话标识(它似乎是通过获取进程标识获得的)。服务器打开一块内存,它对应于会话标识。
(2)服务器将会话标识写入浏览器的cookie中。
(3)服务器中有一个进程监控所有会话的活动状态。如果任何会话超时或主动关闭,服务器将释放内存块。
(4)当浏览器连接到服务器并请求会话时,服务器读取浏览器Cookie中的会话标识。
(5)然后,服务检查会话标识对应的内存是否有效。
(6)如果有效,读取内存中的值。
(7)如果无效,请创建一个新会话。
tomcat默认设置是30分钟
设置非常简单,有三种方法:
(1)添加:
session . setmaxinactiveinterval(900);
参数900的单位是秒,即15分钟不活动后,会话将无效。设置为-1表示永不关闭。
请注意,此会话设置的时间是根据服务器而不是客户端计算的。因此,如果您正在调试程序,您应该修改服务器端的测试时间,而不是客户端。
(2)设置会话到期时间也是常用的方法,即在项目的web.xml中设置。
会话配置
会话超时15/会话超时
/session-配置
这是15分钟,也就是15分钟。
(3)直接在应用服务器中设置。如果是tomcat,可以在tomcat目录下的conf/web.xml中。
找到元素,tomcat默认设置是30分钟,只需修改这个值。
需要注意的是,如果以上三个地方都设置好了,就存在优先级问题,从高到低:
(1)—(2)—-(3)
生命周期:
1)tomcat默认为30分钟。
2)由于会话和cookie的关系,客户端浏览器通过cookie维护会话,cookie不支持跨浏览器共享,这意味着如果浏览器关闭,会话将无效(但服务器仍然保留)。因此,当同一台机器的两个浏览器窗口访问服务器时,将生成两个不同的会话。