设置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工作原理(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。