码迷,mamicode.com
首页 > 其他好文 > 详细

session的生命周期

时间:2018-12-19 10:57:05      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:客户端   用户   打开   解决   注意   date   标识   创建   enc   

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的生命周期

标签:客户端   用户   打开   解决   注意   date   标识   创建   enc   

原文地址:https://www.cnblogs.com/hezhicong/p/10141581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!