给session设置时间 如何设置session失效时间



文章插图
给session设置时间 如何设置session失效时间

文章插图
Cookie与Session的作用于原理
会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话 。常用的会话跟踪技术是Cookie与Session 。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份 。CookieCookie实际上是一小段的文本信息 。客户端请求服务器,如果服务器需要记录该用户状态,就产生一个用户身份标识,然后在响应消息中将该标识号以Cookie的形式传递给浏览器.客户端浏览器会把Cookie保存起来 。浏览器在以后每次访问该web服务器时,浏览器把请求的网址连同该Cookie一同提交给服务器 。服务器检查该Cookie,以此来辨认用户状态 。服务器还可以根据需要修改Cookie的内容. Cookie不能被浏览器共享Cookie具有不可跨域名性,例如浏览器访问Google只会携带Google的Cookie,而不会携带Baidu的Cookie 。Cookie的maxAge决定着Cookie的有效期,单位为秒(Second).
默认情况下,cookie是一个会话级别的,用户退出浏览器后被删除
SessionSession是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上 。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上 。这就是Session 。如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份 。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了 。
【给session设置时间 如何设置session失效时间】Session保存在服务器端 。为了获得更高的存取速度,服务器一般把Session放在内存里 。每个用户都会有一个独立的Session 。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出 。因此,Session里的信息应该尽量精简 。
session工作原理(1)web不会在客户端开始访问它时创建session,在访问特殊的程序并且该程序(servlet)决定与客户端开启会话时,服务器生成一个唯一值,称为Session ID(好像是通过取进程ID的方式取得的) 。服务器开辟一块内存,对应于该Session ID 。(2)服务器再将该Session ID写入浏览器的cookie 。(3)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放该内存块 。(4)当浏览器连入服务器时并请求Session时,服务器就读浏览器Cookie中的Session ID 。(5)然后,服务检查该Session ID所对应的内存是否有效 。(6)如果有效,就读出内存中的值 。(7)如果无效,就建立新的Session 。
tomcat默认设置是30分钟具体设置很简单,方法有三种:(1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效 。设置为-1将永不关闭 。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端 。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端 。
(2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
<session-config><session-timeout>15</session-timeout></session-config>这里的15也就是15分钟失效.
(3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到元素,tomcat默认设置是30分钟,只要修改这个值就可以了 。需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:
(1)—>(2)—->(3)
生命周期:1)tomcat默认是30分钟2)因为session和cookie有关系,客户端浏览器通过cookie维持该会话,cookie不支持跨浏览器共享,意味着如果把浏览器关该会闭的话该会话就会失效(但服务端还保存着) 。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session 。