session的生命周期
Posted hezhicong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了session的生命周期相关的知识,希望对你有一定的参考价值。
session的创建:
session随着用户第一次访问服务器而创建,在访问jsp、servlet等程序的时候才会创建session,只访问html等静态资源并不会创建,session存储在浏览器里面方便快速存取。
session的消亡:
服务器会清除一些长时间不活动的session,默认时间为30分钟,清除之后session就失效,需要重新创建(重新创建意思就是需要再次请求服务器)。
调用session的invalidate方法也会清除使session消亡,invalidate只会消亡当前的session,比如说有两个人访问服务器,创建是两个session,
名字暂且为s1,s2。s1访问的时候然后在某一程序中调用了invalidate方法,清除的就是s1的session,别人的session跟你一点关系都没有。
session对浏览器的要求:
session虽然是保存在服务器中,用户并不知道有这个,但是他的运作还是需要客户端(浏览器)的支持。因为session需要使用Cookie作为识别标识,
HTTP协议是无状态的,session不能依据http连接来判断是否为同一用户,因此服务器会发送一个jsessionId的cookie,他的值为session的id也就是HttpSession.getId()的返回值。
session依据cookie来识别是不是同一用户。
session 的注意事项:
新打开的浏览器会生成一个新的session(新打开的网页不会),新打开的网页会共享当前的session,如果客户讲浏览器的cookie功能禁用或者说用户的浏览器不支持cookie功能的时候怎么办,
在不支持cookie的时候javaWeb提供了另外一种解决方案:url地址重写。
url地址重写是对客户端不支持的情况提供的解决方案,它将该用户的sessionId信息重写到url地址当中,服务器能够解析重写之后的url,然后拿到他的id,这样即使客户不支持也能使用session来记录用户状态,
HttpServletResponse类提供了encodeURL(String url)实现地址重写,该方法会自动判断客户是否支持cookie,如果支持就会原封不动的输出出来,如果不支持那么就会进行地址重写。
tomcat判断用户浏览器是否支持cookie的依据是根据请求中是否含有cookie,尽管用户浏览器支持cookie,但是由于第一次访问的时候不会携带任何的cookie,因为第一次没有cookie携带,URL地址重写后仍会携带
jsessionId,当第二次访问的时候服务器已经在浏览器写入cookie,因此URL地址重写之后就不会再带有jsessionId了。
以上是关于session的生命周期的主要内容,如果未能解决你的问题,请参考以下文章