`
tomkoo
  • 浏览: 186088 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

页面“长时间”操作引起的Session过期

阅读更多

在Servlet Specification 2.4中对Session的过期有这样的一句描述:
引用

The session invalidation will not take effect until all servlets using that session have exited the service method.


所以,如果client跟server没有交互,那么session过期时间就开始计算了。

但是在实际应用中,我遇到了这样的问题:

客户要求系统5分钟不操作Session就过期。但是我们有一项功能“银企对账”,需要在页面上对2000多条数据进行勾选,这个勾选完全是页面的操作,同Server没有任何交互,但是由于数据量大,勾选的时间远远超过5分钟,当勾选完后执行操作时,Session已经过期了。

这样的矛盾如何解决?设置自动同Server交互以维持Session?Or Other?
分享到:
评论
22 楼 tomkoo 2007-10-13  
rehte 写道
lujh99 写道
万一他打勾打到一半突然尿急,上厕所去了,偏偏又超过了5分钟,session过期那他前面的活岂不白干了,所以这个页面就做个定时连接一下服务器,让它永不过期好了,除非他把这个页面关掉。

这种情况就应该算超时,万一在他上厕所的时间里,有其他人利用这个空档做了手脚怎么办?这就像屏保一样,要在用户不交互达到一定时间时锁定。不管用户是不是离开位子。


赞成!如果不是这样的话,这个问题就不存在讨论的基础了,直接设置Session不过期就可以了。
21 楼 lujh99 2007-10-12  
rehte 写道
lujh99 写道
万一他打勾打到一半突然尿急,上厕所去了,偏偏又超过了5分钟,session过期那他前面的活岂不白干了,所以这个页面就做个定时连接一下服务器,让它永不过期好了,除非他把这个页面关掉。

这种情况就应该算超时,万一在他上厕所的时间里,有其他人利用这个空档做了手脚怎么办?这就像屏保一样,要在用户不交互达到一定时间时锁定。不管用户是不是离开位子。


那只是打个比方,即使人不离开座位,比如接个电话什么的,超过5分钟不去点页面也是很有可能的,要求用户隔一定时间要点一下页面是不太可能的,所以由人为的操作来触发与服务器的连接是不恰当的。

不过如果要求session 5分钟过期就是安全性上的考虑的话,还就是得隔一定时间人为触发一下。
20 楼 rehte 2007-10-12  
lujh99 写道
万一他打勾打到一半突然尿急,上厕所去了,偏偏又超过了5分钟,session过期那他前面的活岂不白干了,所以这个页面就做个定时连接一下服务器,让它永不过期好了,除非他把这个页面关掉。

这种情况就应该算超时,万一在他上厕所的时间里,有其他人利用这个空档做了手脚怎么办?这就像屏保一样,要在用户不交互达到一定时间时锁定。不管用户是不是离开位子。
19 楼 lujh99 2007-10-12  
万一他打勾打到一半突然尿急,上厕所去了,偏偏又超过了5分钟,session过期那他前面的活岂不白干了,所以这个页面就做个定时连接一下服务器,让它永不过期好了,除非他把这个页面关掉。
18 楼 rehte 2007-10-12  
可以使用一个全局变量记录最近click的时间:
var latest_click_time;
然后在onClick中检查当前时间和上次时间之差是否超过4分钟(也可以是其他小于5分钟的数字),如果是,则调用ajax,并更新latest_click_time为当前时间,如果不是,则只更新latest_click_time为当前时间。
这样既可以防止服务器压力过大,又可以防止超时。
17 楼 timerri 2007-10-12  
龟毛,又想马儿跑,又想马儿不吃草~~~~~~

1.设置一个全局变量A=0
2.把页面关键部分的onmouseover和onkeypress挂上一个函数,使A=1;
3设置一个每4分钟一次的计时器。如果A=1则发一个ajax请求,并设A=0;
如果A=0则告知用户要超时了,赶紧动动。

要这个办法还满足不了你......那就不知道怎样的龟毛才能满足你了
16 楼 ahau205109 2007-10-12  
你也比较龟毛 所以你的客户也龟毛 无话可说
15 楼 chbest 2007-10-12  
点上一页下一页的时候出发ajax.这样的话.你5分钟不翻页的话就确定你session超时
14 楼 ddddddddd 2007-10-12  
tomkoo 写道
突然又想到一个比较“龟毛”的问题,如果用户在这个界面确实没有做操作了,那就应该在5分钟的时间之内页面失效。

如果我们自动访问Server以保持Session的话,那么这个页面就永远不会过期了。

这也是一个问题,虽然有点挑刺的感觉。



用户有操作,比如勾选复选框,才用ajax发送个请求维持session,否则不发送。
13 楼 tomkoo 2007-10-12  
如果每次click时间都同Server交互,因为页面内容很多,click事件也非常的多,这样就会很频繁的同Server交互,负载可能会无形中增大很多。
12 楼 抛出异常的爱 2007-10-12  
tomkoo 写道
突然又想到一个比较“龟毛”的问题,如果用户在这个界面确实没有做操作了,那就应该在5分钟的时间之内页面失效。
如果我们自动访问Server以保持Session的话,那么这个页面就永远不会过期了。
这也是一个问题,虽然有点挑刺的感觉。

如果写的话可以控制最大次数就行了。
11 楼 andycartoon 2007-10-12  
可以每勾一下就让发送ajax请求
10 楼 zelsa 2007-10-11  
那就在body上加一个onclick事件吧,只在click时才发送ajax请求
9 楼 fengzl 2007-10-11  
tomkoo 写道
突然又想到一个比较“龟毛”的问题,如果用户在这个界面确实没有做操作了,那就应该在5分钟的时间之内页面失效。

如果我们自动访问Server以保持Session的话,那么这个页面就永远不会过期了。

这也是一个问题,虽然有点挑刺的感觉。


所以我才问那个问题啊,你这个只能更改客户的要求,有求部分功能的session失效时间不一定就是5分钟
8 楼 tomkoo 2007-10-11  
突然又想到一个比较“龟毛”的问题,如果用户在这个界面确实没有做操作了,那就应该在5分钟的时间之内页面失效。

如果我们自动访问Server以保持Session的话,那么这个页面就永远不会过期了。

这也是一个问题,虽然有点挑刺的感觉。
7 楼 抛出异常的爱 2007-10-11  
tomkoo 写道

在Servlet Specification 2.4中对Session的过期有这样的一句描述:
引用

The session invalidation will not take effect until all servlets using that session have exited the service method.


所以,如果client跟server没有交互,那么session过期时间就开始计算了。

但是在实际应用中,我遇到了这样的问题:

客户要求系统5分钟不操作Session就过期。但是我们有一项功能“银企对账”,需要在页面上对2000多条数据进行勾选,这个勾选完全是页面的操作,同Server没有任何交互,但是由于数据量大,勾选的时间远远超过5分钟,当勾选完后执行操作时,Session已经过期了。

这样的矛盾如何解决?设置自动同Server交互以维持Session?Or Other?

到了那个页面后作一个嵌入式自刷新页面。。。。每分钟刷一次无返回就可以了。
不需要返回页面的请求。。。。压力应该不是很大吧。。而且只有一个页面。。。
6 楼 gufeng 2007-10-11  
写道
看来大家给出的答案跟我想的差不多,不管是不是使用ajax,本质上都是定时自动的同server交互来保持session不过期

这样会加重服务负担的!
5 楼 tomkoo 2007-10-11  
看来大家给出的答案跟我想的差不多,不管是不是使用ajax,本质上都是定时自动的同server交互来保持session不过期。
4 楼 joynet007 2007-10-11  
可以再刚开始的时候给session设置一个时间哦!比如设置15分钟哦,当然用ajax 没一分钟就,调用一次也是可以的哦!
3 楼 jiangcccc 2007-10-11  
5分钟不操作Session就过期?这个操作包括页面操作吗?如果是就用ajax响应好拉!

相关推荐

    设定tomcat中session过期时间.txt

    ### 设定Tomcat中Session过期时间的三种方式 在Web开发中,Session管理是确保用户状态跟踪的重要机制之一。Tomcat作为一款广泛使用的Java应用服务器及Servlet容器,提供了多种方式来设定Session的有效时长。这有助...

    判断session过期的方式

    服务器收到心跳请求后,会更新Session的最后访问时间,防止其因无操作而过期。如果一段时间内未收到心跳,服务器可以认为Session已过期。心跳请求可以是轻量级的Ajax请求,示例代码如下: ```javascript // 定时...

    项目访问时间过长session过期提醒

    "项目访问时间过长session过期提醒"这个话题涉及到的是如何配置Web应用程序,以便在用户的会话过期时自动跳转到特定的过期页面,提醒用户重新登录。下面我们将详细讲解实现这一功能的关键步骤和技术。 首先,我们...

    session过期问题

    这种方法可以避免用户因为长时间无操作而导致Session过期,但增加了服务器的负担。 3. **Cookie与Session结合**:服务器可以在创建Session时同时设置一个与Session关联的Cookie,Cookie的过期时间略长于Session。...

    在ASP.NET中,设置Session的过期时间的方法

    方法一:  在后台应用程序中设置:Session.Timeout = 1;  注意:1、此方法可以设置在一个... 您可能感兴趣的文章:php 如何设置一个严格控制过期时间的sessionjava设置session过期时间的实现方法php中实现精确设置se

    session过期处理

    - 定期清理无效Session:服务器应定期扫描并删除长时间未更新的Session,避免内存占用过多。 - 避免存储敏感数据:Session不是安全存储,不要存放敏感信息,如密码明文。 - 使用CSRF Token:防止跨站请求伪造攻击...

    session过期时间设置

    在本文中,我们将详细讨论如何设置Session的过期时间以及在Session失效后进行相关操作。 首先,设置Session的过期时间主要是为了安全和性能考虑。默认情况下,Session可能会在服务器内存中长时间存储,消耗资源,...

    详解php设置session(过期、失效、有效期)

    3. `session.gc_maxlifetime` 也设置为一个大值,如99999999,确保服务器端Session数据长时间保存。 如果无法直接修改`php.ini`,也可以通过程序逻辑来实现Session永不过期。一种方法是使用Cookie来持久化Session ...

    session失效重新登录后,返回之前页面,并保留表单数据

    然而,Session有其生命周期,超过设定时间未活动,服务器会自动清理Session,导致用户状态丢失。 2. 登录逻辑: 当检测到Session失效,服务器会清除与之相关的用户信息,然后将用户重定向到登录页面。登录页面应...

    phpcms web发布session过期问题解决

    当用户长时间无操作或者达到预设的session生命周期时,session会自动销毁,导致用户状态丢失,表现为用户被强制登出。 在phpcms系统中,session的配置通常位于`config.php`或`includes/config.inc.php`文件内。你...

    .net 和IIS7.5关于Session超时的设置

    - **安全性**:长时间的Session可能导致安全风险,如用户离开电脑但Session仍然活跃,其他人可能有机会访问其账户。 - **性能**:大量活跃的Session会占用服务器资源,尤其是`InProc`模式,因此合理设置Session...

    asp中设置session过期时间方法总结

    如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间为20分钟,IIS中session时间可以更改 时间设置要放在前面 例如 代码如下: Session.Timeout=30...

    Session过期后自动跳转到登录页面的实例代码

    然而,Session不能永久保持,它有默认的超时时间,超过这个时间如果没有接收到客户端的任何请求,Session就会被视为过期。在本文中,我们将探讨如何在Session过期后自动将用户重定向到登录页面。 首先,开发者可能...

    weblogic设置session超时时间

    WebLogic 设置 Session 超时时间 WebLogic 是一个功能强大且流行的 Java 企业级应用服务器,支持多种方式来设置 Session 的超时时间。在本文中,我们将介绍如何在 WebLogic 中设置 Session 超时时间。 Method 1: ...

    java设置session过期时间的实现方法

    然而,为了防止Session被恶意用户长时间占用或者因为用户离开浏览器而未清除Session导致资源浪费,通常需要设置Session的过期时间。下面我们将详细探讨Java中设置Session过期时间的三种方法。 1. **在部署描述符...

    php中实现精确设置session过期时间的方法

    例如,通过记录session的最后访问时间`$_SESSION['last_access']`,并在每次请求时检查这个时间戳,如果超过预设的过期时间,就重置session。这种方法可以实现更加灵活的session管理,如下所示: ```php if (!is...

Global site tag (gtag.js) - Google Analytics