Session的生命周期

转载 2013年12月02日 16:56:38
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了。

解析Spring托管下Hibernate Session的生命周期

一、Session生命周期的影响因素     Hibernate Session的生命周期受到其自身属性和方法的影响,简单的说: SessionFactory的openSession() ...
  • a616413086
  • a616413086
  • 2016年10月14日 09:29
  • 1938

cookie和session的区别及session的生命周期

这些都是基础知识,不过有必要做深入了解。先简单介绍一下。 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都...
  • rongwenbin
  • rongwenbin
  • 2016年06月29日 17:26
  • 5044

Session的生命周期

Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访...
  • han_dongwei
  • han_dongwei
  • 2014年04月15日 23:39
  • 3949

Session的生命周期和工作原理

一、什么是Session,如何使用? Session是用于存放用户与web服务器之间的会话,即服务器为客户端开辟的存储空间。 由于客户端与服务器之间的会话是无状态的机制,Session则可用于关联...
  • hanziang1996
  • hanziang1996
  • 2018年01月04日 11:24
  • 41

Session的生命周期

Session的生命周期   Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet...
  • jsjjdzg
  • jsjjdzg
  • 2016年05月03日 11:47
  • 136

Session的生命周期

以前在学习的时候没怎么注意,今天又回过头来仔细研究研究了一下Session的生命周期。   Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一...
  • myemail_sl
  • myemail_sl
  • 2014年01月17日 14:19
  • 374

Session 的生命周期

session的生命周期 标签: sessionweb.xml  分类: Tomcat(13)  Servlet和Jsp(46)  版权声明:本文为博主...
  • super_YC
  • super_YC
  • 2016年10月27日 13:42
  • 199

Servlet第六篇【Session介绍、API、生命周期、应用】

什么是Session Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式...
  • hon_3y
  • hon_3y
  • 2017年01月31日 15:50
  • 401

session的生命周期

原文:http://www.cnblogs.com/binger/archive/2013/03/19/2970171.html  以前在学习的时候没怎么注意,今天又回过头来仔细研究研究了一下Se...
  • daimingyang123
  • daimingyang123
  • 2014年11月09日 15:46
  • 253

关于session的生命周期。

在程序开发的时候, request session appplication内置对象, 是用的比较多的. request和appliction比较简单, 一个代表一次请求的生命周期. 另一个代表应用程...
  • qq_29560239
  • qq_29560239
  • 2015年09月16日 11:22
  • 89
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Session的生命周期
举报原因:
原因补充:

(最多只允许输入30个字)