JSP中的如果在代码中定义 session.setMaxTimeout(20)
过期时间为20分钟。那是从什么时候开始计算这个时间的呀?

解决方案 »

  1.   

    我现在想了一下应该是从服务器创建了这个SESSION开始的这一刻。
    因为 服务器 的SESSION实现代码是这样的
    def touch(self):
            # called by server - don't call yourself
            self.lastused=time.time()
            self.new=False
            self.timeout=False
    在初始化的时候就会调用此方法、得到lastused这个值。然后
    判断过期是:
    def isOverAged(self):
            return (time.time()-self.lastused)>self.timeoutsecs
    表示当创建了SESSION的时候 到现在的时间如果超过了 超时值就示 为过期了
      

  2.   

    当一个值被存到Session中后开始计算, 当中如果这个session被操作到的话比如取值 刷新值 时间就要从新计算
      

  3.   

    再问一个问题:IIS、Resin、Tomcat这些服务器实现 SESSION 机制等原理是一样的吗?
      

  4.   

    session过期是根据用户操作完成之后开始计算的
    比方说,session过期时间是半小时,用户一进行操作session就重新开始计时,从本次操作之后还有半小时session才会过期。
      

  5.   

    楼主可以网上搜一下session相关的原理,大致是这样的:
    当client首次访问server端的时候,服务器端会给浏览器返回一个值保存在cookie里面,以后浏览器再次访问的时候,都会用带个这个cookie值。这就相当于一个门卡,要是有了这张门卡,服务器端就认为你已经登记过了。要是没有,就重新登记一下。
      

  6.   

    session被创建开始,同意一楼意见
      

  7.   

    session好像是从没有对session进行操作吧,也就是没有往里边存值或取值开始算的
      

  8.   

    session与cookies不是不同的概念么~?
    session是会话级阿~
    cookies是客户端的耶~~
    7L~~?
      

  9.   

    对啊,是不同概念。浏览器是可以在客户端创建cookie,服务器端就正好利用这个来实现session机制。这是我第一次访问mail.sina.com.cn的时候,服务返回给我的cookie:SINA_NEWS_CUSTOMIZE_city=%u7518%u8083; vjuids=5721cd638.11e6dc22e6e.0.1d385e22c5561; vjlast=1239379837
    ,1239380142,10; __utma=269849203.129301036.1231154992.1231154992.1231154992.1; __utmz=269849203.1231154992
    .1.1.utmccn=(organic)|utmcsr=google|utmctr=%E6%88%BF%E5%9C%B0%E4%BA%A7+%E5%AE%A3%E4%BC%A0%E8%AF%AD|utmcmd
    =organic; loginType=freemail; URL_MAIL_3IN1=http://mail3-104.sinamail.sina.com.cn/; sina_free_mail_lver
    =riaagentv0; sina_free_mail_kodo=on; SINAGLOBAL=118.181.29.141.134581230174205670