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了。

 

posted @ 2018-12-19 10:16  本少丶涛  阅读(473)  评论(4编辑  收藏  举报