关闭

session的生命周期

23787人阅读 评论(44) 收藏 举报
分类:


session简介

 

    在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间。

    具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。


需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。

  

session生命周期

 

    Session中的数据保存在服务器端,在客户端需要的时候创建Session,在客户端不需要的时候销毁Session,使它不再占用服务器内存。前面说了服务器并不管客户端是否依然存在,因而它也无法确定客户端什么时间不再使用它,但是如果在客户端不再用的时候不及时销毁Session的话,服务器很快就会内存不足。为了解决这个问题,给Session加了一个生命周期,当服务器发现Session超过了它的生命周期,就会释放该Session所占用的内存空间。

 

要了解Session首先要知道一个概念:Session的销毁只有两种情况:

第一:session调用了session.invalidate()方法.

第二:前后两次请求超出了session指定的生命周期时间.

 

第二种情况的解释:

Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session"活跃(active"了一次。

 

    在ASP.NET中Session的默认生命周期是20分钟,也就是当我们在9:00的时候设置了一个Session,如果在9:20之前客户端没有任何请求,那么它的生命周期就到9:20分钟结束。但是一旦用户在9:19又向服务器发送了一个请求,那么这个Session现在的生命周期就是在当前时间的基础上再加上20分钟,也就是此时这个Session的生命周期是到9:39结束。

 

 

    举例:当我们登陆一个网站,网站会记录我们的个人信息如用户名等,如果我们登陆了很长时间但是没有任何操作,那么session超时,我们再次操作时会让我们重新登陆。但是如果我们登陆后,一直在访问这个网站,就不会出现session超时的问题,我们也无需重新登陆。(个人理解)

 


    由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

 


    Session的超时时间为maxInactiveInterval属性,可以通过对应的getMaxInactiveInterval()获取,通过setMaxInactiveInterval(longinterval)修改。

Session的超时时间也可以在web.xml中修改。另外,通过调用Sessioninvalidate()方法可以使Session失效。

 

<session-config> 

   <session-timeout>60</session-timeout>       <!--单位:分钟--> 

</session-config>

注意:<session-timeout>参数的单位为分钟,而setMaxInactiveInterval(int s)单位为秒。

web.config里设置<sessionState timeout="30"></sessionState>

  


Session具有以下特点:


1Session中的数据保存在服务器端;

2Session中可以保存任意类型的数据;

2Session默认的生命周期是20分钟,可以手动设置更长或更短的时间。

至于设置可以用代码设置或者在Web.config中配置,不过不建议将Session的超时时间设置过长,因为默认情况下Session在内存中保存,设置时间过长保存的数据过大的话会导致内存不足。

 

 

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

 



14
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

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

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

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

Session的生命周期

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

Session的生命周期和工作原理

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

Session的生命周期

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

Session的生命周期

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

Session 的生命周期

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

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

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

session的生命周期

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

关于session的生命周期。

在程序开发的时候, request session appplication内置对象, 是用的比较多的. request和appliction比较简单, 一个代表一次请求的生命周期. 另一个代表应用程...
  • qq_29560239
  • qq_29560239
  • 2015-09-16 11:22
  • 89
    个人资料
    • 访问:1286784次
    • 积分:20326
    • 等级:
    • 排名:第473名
    • 原创:235篇
    • 转载:39篇
    • 译文:0篇
    • 评论:4650条
    博客专栏
    最新评论