session的生命周期是怎样的

一、总结

一句话总结:Tomcat中Session的默认失效时间为20分钟。如果我们敲代码的时候把它设置成1个月,那么这一个月的数据会代替默认20分钟的数据,使session的失效时间为一个月。

1、手机浏览器的session为什么会失效的很快?

绝大多数的手机浏览器都不支持Cookie,而session判断用户是要依赖cookie的。

这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。

2、session依赖cookie判断用户的过程是怎样的?

这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。

3、同一浏览器新开的浏览器窗口和已有窗口再开的子窗口的session公用情况是怎样的?

新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。

4、Session的声明周期是多久?

Tomcat中Session的默认失效时间为20分钟。如果我们敲代码的时候把它设置成1个月,那么这一个月的数据会代替默认20分钟的数据,使session的失效时间为一个月。

5、不同用户的同名session会互相干扰么?

不会,每一个session都会有一个sessionid而且是唯一的,不可能存在干扰的。seeion是对话变量,每个用户对话有自己特有的sesion。

6、session的使用流程是怎样的?

客户端访问服务器的时候回带上cookie,如果cookie里面存了sessionid,那么服务器一下子就能判断用户了。

客户端第一次带的cookie是没有sessionid的,登录之后,那么cookie中就有sessionid了,然后在cookie和session的有效期里面,服务器端就能判断用户。服务器端是根据sessionid来判断用户的,每一个用户的sessionid都不同。

7、如何解决大部分手机浏览器不支持cookie的问题?

例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写。

  URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

二、session的生命周期

Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。

Session什么时候失效?

  1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。

  2. 调用Session的invalidate方法。

Session对浏览器的要求:

  虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。

  该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。

  注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。

如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写。

  URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

  注意:TOMCAT判断客户端浏览器是否支持Cookie的依据是请求中是否含有Cookie。尽管客户端可能会支持Cookie,但是由于第一次请求时不会携带任何Cookie(因为并无任何Cookie可以携带),URL地址重写后的地址中仍然会带有jsessionid。当第二次访问时服务器已经在浏览器中写入Cookie了,因此URL地址重写后的地址中就不会带有jsessionid了。

三、不同用户使用同名session会互相干扰吗 ?

奇怪,不同用户使用同名session会互相干扰吗
session是在应用网页的ASP中直接使用的,如果第二个用户也用到这个网页,会取到第一个用户存在该session的值.

我的网页直接使用
Session("SessionDis") = "1"

是不是需要在Global.asa中定义?

如果会干扰,那你session("username")不是没用啦,每一个session都会有一个sessionid而且是唯一的

IIS根据客户端IP和客户端浏览器cookie来区分用户
所以不会干扰

不可能存在干扰的。seeion是对话变量,每个用户对话有自己特有的sesion。

四、session运行流程

客户端访问服务器的时候回带上cookie,如果cookie里面存了sessionid,那么服务器一下子就能判断用户了。

客户端第一次带的cookie是没有sessionid的,登录之后,那么cookie中就有sessionid了,然后在cookie和session的有效期里面,服务器端就能判断用户。服务器端是根据sessionid来判断用户的,每一个用户的sessionid都不同。

 

最新文章

  1. Excel应该这么玩——6、链接:瞬间转移
  2. CSS基础(五):定位
  3. WEB安全测试之XSS攻击
  4. 慢牛股票-基于Sencha+Cordova的股票类APP
  5. 【转】特殊权限控制之SUID、SGID、Sticky
  6. php中一串数子的转化
  7. JavaScript 内部对象
  8. [转] java Class类
  9. UISearchBar控件
  10. First blogs start
  11. R语言分析(一)-----基本语法
  12. 1、通过eureka创建注册中心
  13. 认识ASP.NET Windows身份认证
  14. hasClass() removeClass() addClass()
  15. mysql系列(3)之 DML语句
  16. 第一篇:初识ASP.NET控件开发_第二节:HelloWorld
  17. Redis存读取数据
  18. 2:4 动态方法的调用(简化Action的配置)
  19. NSJSONSerialization的简单用法
  20. php 购物车实现购物的原理

热门文章

  1. kali之获取靶机的图片和看的url
  2. caioj 1065 动态规划入门(一维一边推3:合唱队形)
  3. 紫书 例题 9-5 UVa 12563 ( 01背包变形)
  4. 使用python创建cocos2d-x项目
  5. Chromium Graphics: Android L平台上WebView的变化及其对浏览器厂商的影响分析
  6. SQL解析器的性能測试
  7. AVEVA RVM to 3D PDF
  8. hdu 1875 畅通project再续(kruskal算法计算最小生成树)
  9. Http post提交和get提交
  10. css选择器和优先级总结