`

用户访问超时

    博客分类:
  • js
 
阅读更多
用户访问超时

解决两种情况下的用户访问超时。

a)普通http请求的session超时。

b)异步http请求的session超时,使用ext后大部分的界面刷新都是异步的ajax请求。



不管是那种类型的http请求总是可以由一个过滤器来捕捉。

分类:普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。

其实对于常见的ajax框架,header中还有标示自己身份的header信息。



对于普通的http请求,发现session超时后直接重定向到一个超时页面,显示访问超时。

对于异步http请求,发现session超时后则向请求的response中写入特定的超时头信息,客户端ajax对象检测

头信息,发现有超时状态标志后调用显示超时信息的javascript方法,提示用户访问超时。





服务器端session超时后在过滤器中为response添加新的头信息,标记该请求超时:




Java代码  收藏代码

    if(httpRequest.getSession().getAttribute("USER") == null){ 
            String ajax = httpRequest.getHeader("x-Requested-with"); 
            if(ajax != null && ajax.equals("XMLHttpRequest")){ 
            httpResponse.setHeader("sessionstatus", "timeout"); 
            } else { 
            //普通http请求 session超时处理 
            wrapper.sendRedirect("......"); 
            } 
        } else { 
            chain.doFilter(request, response); 
        } 





使用Ext.Ajax对象完成异步请求的交互,Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)。

注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件。在该事件的回调函数里面判断

访问请求是否超时。使用Ext.Ajax对象的好处是,只需要引入一个包含了几行超时处理代码的js文件,就可以

为当前应用增加超时处理功能,原有代码不需要做任何修改。





使用Ext.Ajax对象完成异步请求交互,每个页面引用:




Js代码  收藏代码

    Ext.Ajax.on('requestcomplete', function(conn,response,options){ 
        if(response.getResponseHeader("sessionstatus")){ 
            window.location = "<c:url value='/'>"; 
        } 
    }); 





可以利用的几个特性:

a)所有的ajax请求均带有x-requested-with:XMLHttpRequest头信息

b)Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)

c)注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件(概念类似spring的aop拦截)。





对于其他的ajax框架,解决用户访问请求超时这个问题的思路是类似的。
分享到:
评论

相关推荐

    ASP技巧收集-防asp超时

    当用户访问网站时,服务器会为每个用户创建一个唯一的会话ID,并将该ID与用户的相关数据关联起来。在本例中,我们检查`session("userid")`是否存在,以此判断用户会话是否仍然有效。 #### 结论 通过上述方法,我们...

    JAVA用户登录超时过滤器和文件配置

    这个过滤器会在用户访问受保护的页面之前进行拦截,如果发现用户会话已经超时或者不存在,将重定向到登录页面。在本例中,我们将探讨如何实现这样一个过滤器以及相关的配置。 首先,`web.xml` 是Java Web应用程序的...

    七牛云融合 CDN 管理平台实践之路.pdf

    - **跨网覆盖**:为了节约成本,一些供应商可能采用跨网覆盖策略,导致用户访问超时严重。 - **资源短缺**:由于供应商自身宽带资源不足,CDN服务质量将变得不稳定。 - **运营商劫持**:运营商的劫持行为可能导致...

    Vsphere 更改会话超时时间

    过短的超时时间可能会频繁打断用户的操作流程,而过长的超时时间则可能增加未授权访问的风险。 #### 实施步骤详解 1. **登录Vsphere Client**: - 首先需要登录到Vsphere Client,通常可以通过Web浏览器或者安装...

    java 访问网络 下载文件 爬虫 超时处理解决方案

    在IT领域,尤其是在Java编程中,访问网络、下载文件、实现爬虫功能以及处理超时问题是非常关键的技术点。本文将深入探讨如何在Java中有效处理这些方面的问题,特别是超时处理解决方案,这对于构建高效、稳定的网络...

    详解Nginx服务器中配置超时时间的方法

    在服务器运行过程中,如果一个请求耗时过长,可能导致服务器资源被过度占用,从而影响其他用户的正常访问。通过设定超时时间,可以在特定时间后结束无响应的请求,避免系统资源被长时间锁定,从而提高服务器的性能和...

    .net c#线程超时解决方案

    #region 关闭,退出超时的用户线程 private static DateTime ExitInvalidThreadLoop_LastRunTime = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0, 0)); private static bool ExitInvalidThreadLoopRunning { ...

    Android超时处理

    在Android开发中,网络操作是应用与服务器交互的重要部分,涉及到的数据访问往往伴随着各种问题,如网络连接状态、接口返回状态、异常处理以及超时问题。"Android超时处理"这个话题聚焦于如何在Android应用中优雅地...

    php登录超时检测功能的类

    2. **检测会话状态**:每次用户访问受保护的页面时,都需要检查其Session是否仍然有效。这可以通过在每个控制器方法或全局中间件中添加代码来实现。如果Session已经过期,就需要提示用户重新登录。 3. **自动刷新...

    详解SpringBoot中Session超时原理说明

    在 SpringBoot 中,Session 超时是指在一定时间内没有任何操作,Session 就会超时失效,导致用户需要重新登录才可以继续访问页面。这是因为 Session 的超时时间是有限制的,默认情况下是 1800 秒,在这个时间内如果...

    WPF 超时退出例子

    根据需求,你可能还需要考虑其他因素,如是否允许用户取消超时,是否在后台任务运行时暂停超时,或者在特定条件下延长超时时间等。 通过以上步骤,你可以在WPF应用中实现一个基本的超时退出功能。记住,这只是一个...

    带有请求超时设置的soap jar包

    太短的超时可能导致因网络短暂波动而引发不必要的错误,而过长的超时则可能导致应用无响应,影响用户体验。因此,根据具体的服务响应时间和网络状况来调整超时值是必要的。 总结起来,这个自定义的`soap jar包`提供...

    .net解决了防止用户重复登陆,session超时

    综上所述,.NET通过配置`web.config`和编写`Global.asax`文件,结合Session管理、权限控制以及防止重复登录的策略,有效地解决了用户登录和超时问题,保证了系统的安全性。在实际应用中,这些方法需要根据具体业务...

    设置Linux空闲超时时间

    这一特性对于提高系统的安全性非常有用,特别是对于那些通过网络访问的用户来说,可以有效地防止因长时间无人操作而造成的安全风险。 #### 如何设置Linux空闲超时时间 根据提供的内容,我们可以了解到设置Linux...

    关于webResponse类使用的时候超时问题

    如果目标服务器有并发请求限制,或者对单个IP的访问频率有限制,可能会导致请求被延迟或超时。检查服务器的策略和配置。 7. **代码优化**: 代码中使用了`GetResponse()`方法,该方法会阻塞直到服务器返回响应。...

    判断用户已经退出和防止用户未登录直接访问页面

    当Session超时或者用户手动注销时,这个事件会被触发。如果需要立即注销用户,可以调用`Session.Abandon()`方法。 然后,我们来看如何防止用户未登录直接访问页面。这通常通过授权机制实现。ASP.NET提供了一些内置...

    .net C#线程超时

    #region 关闭,退出超时的用户线程 private static DateTime ExitInvalidThreadLoop_LastRunTime = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0, 0)); private static bool ExitInvalidThreadLoopRunning { ...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...

    超时商品管理系统

    用户通过这个程序可以进行商品信息的录入、查询、更新和删除等操作。 其次,"说明.txt"文件很可能是对系统的使用指南或开发过程的简要说明,可能包含系统功能的介绍、操作步骤、注意事项以及可能遇到的问题和解决...

    M3-USART1超时处理完美版

    2. **DMA(直接存储器访问)**:在高数据速率传输时,使用DMA可以减轻CPU负担,让DMA控制器直接处理数据传输。结合超时机制,即使在DMA传输中也可以检测到通信问题。 3. **HAL库**:STM32的HAL库提供了一套高级抽象...

Global site tag (gtag.js) - Google Analytics