`
Jack-chen
  • 浏览: 71435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于ajax应用中session过期问题的几个解决方案

    博客分类:
  • Java
阅读更多
现在web开发中,ajax应用的比较多。关于此方面的框架也不少。在应用中都会遇到session过期
的问题,如处理不当会影响用户体验,也有可能产生莫名的问题。
        结合自己的思考和网上相关内容的参考,给出如下解决方案。每个方案都有不同的优缺点,欢迎
大家指正。
     方案1:检查AJAX返回的返回的内容是否有<html>标签
           在web系统中,当session过期时,当用户有操作的时候,此时系统一般会返回登陆界面。
           让用户重新输入用户名和密码。当session过期的时候,AJAX请求返回的内容应该是登陆界面的页面
          内容(即登陆界面的页面的html代码)。通过判断返回内容是否用<html>来判断session是否过期。
     var result=request.responseText;/* ajax返回的内容*/
    
     if(result.indexOf('<HTML>')>-1){/*返回内容中有html标签*/}
     或者
     var r=/<html>/ig;
     if(r.test(result)){/*返回内容中有html标签*/}
     通过上面的方法可以判断session是否过期,然后根据具体的业务进行异常处理。

     方案2:返回的结果中有session是否过期的标志。也有人称为true/false模式
                   此解决方案一般结合json使用。
     如返回的结果是:
        var res={
             "result":true,/*session没有过期,false(session过期)*/
             "data"  :""/*其它数据*/
                     }
     if(res["result"])
     {
          /*session没有过期*/
      }else{
         /*session过期*/
     }

     方案3:利用时间戳
     在页面上搞个全局变量
     var startDate; /*ajax最近一次访问服务器的时间,Date类型*/
     if(new Date().getTime()-startDate.getTime()<30*60*1000)
     {
           /*假设session过期的时间30分钟*/
           /*session没有过期*/
     }else{
           /*session过期*/
     }
     哈哈!Do not trust the client

    方案4:延长session过期时间
             此方案有性能问题
          4.1:延长session过期时间
          4.2:client轮循server。(AJAX轮循server或client,server保持长连接)

分享到:
评论
8 楼 wan_jm 2012-05-21  
超时是服务端的问题, 客户端不管的。
所以一楼所说的情况算session没有超时!
7 楼 hunterkevin 2010-04-01  
我也认为得第二种比较好,不过,你一个ajax请求而已,返回的时候居然就过期了,这个时间也太久了点。。
6 楼 hany 2010-04-01  
nishizhutoua 写道
方案2是正统的方法, 其他的都不太好.
不过就算是方案2依然会出现服务端生成json的时候result:true,但是当json返回到客户端时刚好超时了.怎么搞?


当json返回到客户端时刚好超时了
这个问题不用考虑。就是jsp也不会传输时间的。
5 楼 chenchuan 2010-04-01  
现在没遇到过 我觉得第二种比较好
4 楼 xbcoil 2010-03-31  
刚好超时几率很小把....忽略不计是可以的把..
   第二种不错...
3 楼 nothink 2010-03-30  
我认为当用户session超时或其他session超时 的时候,那调用后台的时候一定会throw excpetion.那会throw exception就一定证明了这个ajax的请求是失败的。而且可以在返回结果中记录出了什么错,然后返回给客户。

   PS:这不算是设计模式里的东西吧
2 楼 Jack-chen 2010-03-30  
Applicaiton.save();
1 楼 nishizhutoua 2010-03-30  
方案2是正统的方法, 其他的都不太好.
不过就算是方案2依然会出现服务端生成json的时候result:true,但是当json返回到客户端时刚好超时了.怎么搞?

相关推荐

    ajax session过期问题的几个解决方案

    本文将针对AJAX在Session过期问题上提供几个解决方案,并对每个方案的优缺点进行讨论。 方案1:通过检查AJAX返回内容是否包含标签 当Session过期时,服务器通常会返回登录页面的HTML代码。因此,我们可以通过AJAX...

    phpcms web发布session过期问题解决

    本文将深入探讨phpcms中的session过期问题,并提供解决方案。 首先,我们需要理解session的工作原理。Session是通过在服务器端存储用户状态信息,每次用户请求时,通过session ID来识别用户。当用户长时间无操作...

    使用Ajax时处理用户session失效问题的解决方法

    通过这样的方式,我们能够有效地处理Ajax请求时的用户session失效问题,确保用户在session过期后能够被正确地引导至登录页面。同时,这也是一种常见的跨域问题解决方案,因为跨域请求同样需要在服务器端返回正确的...

    浏览器关闭使session失效的问题多种解决方式

    最后一个解决方法是不做任何特别的操作,等待session自动过期。这种方法的优点是简单,不需要开发者做任何额外的工作。然而,缺点同样明显,用户可以在等待session失效的这段时间内重新登录,这就使得前一次的会话...

    关于html+ashx开发中几个问题的解决方法

    本文将分享两个我在实际开发中遇到的问题及其解决方案。 问题1:多请求处理与代码组织 传统的做法是为每个不同的请求创建一个单独的Handler,但这可能导致大量重复的代码和难以维护的结构。一种改进的方式是使用...

    在线人数统计 在线人数统计

    - `web_online.sln`:这是一个解决方案文件,用于管理整个项目,包括引用的库、项目设置、版本控制信息等。在进行在线人数统计时,此文件维护了所有相关组件的组织和构建顺序。 实现在线人数统计通常涉及以下几个...

    网站在线ip统计 -ASP源码.zip

    2. **性能优化**:大量用户同时在线时,频繁的操作Session和Application可能会影响服务器性能,可以考虑使用缓存技术或分布式存储解决方案。 3. **匿名用户与注册用户**:区分匿名访问和注册用户,提供更准确的在线...

    ASP基于BS辅导教学管理系统(论文+源代码+答辩PPT).rar

    - 系统安全性和性能优化的策略,如防止SQL注入、设置session过期时间、优化数据库查询等。 - 教学管理系统的具体功能模块设计,如课程管理、教师管理、学生管理、成绩管理等,以及这些功能如何通过ASP和BS架构实现。...

    Php多域名登陆

    在IT行业中,多域名登录是一种常见的需求,尤其在拥有多个子网站或子应用的企业环境中。本文将详细讨论“PHP多域名登录”的实现方法,并提供一些关键的实施步骤和注意事项。 首先,多域名登录的核心思想是共享用户...

    asp.net验证码 asp.net验证码

    对于ASP.NET MVC项目,可以使用Google的ReCaptcha服务,它提供了一种强大的反机器人解决方案。需要在Google ReCaptcha网站上注册获取API密钥,然后在视图中添加相应的HTML标记,同时在控制器中处理验证响应。 三、...

    在线人数统计 V1.0(Asp.net+ SqlServer).rar

    在线人数统计系统是Web开发中的一个常见需求,用于实时跟踪并显示网站当前的活跃用户数量。这个名为"在线人数统计 V1.0(Asp...开发者通过理解和应用这些知识点,可以构建出高效、稳定且安全的在线人数统计解决方案。

    验证码的实现方法-局部刷新

    对于那些不熟悉Ajax(异步JavaScript和XML)的开发者来说,这是一个相对简单的解决方案。 首先,我们来了解一下验证码的基本原理。验证码通常由一串随机字符或数字组成,这些字符被扭曲、旋转或以其他方式变形,以...

    j2EE 缓存 Web前端优化 后台 服务器优化

    主要分为以下几个层面: 1. **浏览器缓存(Web前端优化)** - **减少HTTP请求**:通过合并CSS和JavaScript文件,减少HTTP请求次数,从而加快页面加载速度。 - **减少DNS查找**:DNS查找会消耗时间,通过预加载DNS...

    UniGUI集合说明

    使用Grid+Report报表控件的方法是一种推荐的解决方案,它结合了数据网格与报表的功能,能够更灵活地展示和打印数据。 #### 33. UniGUI的布局面板控件TUniRegionPanel `TUniRegionPanel`是一种用于布局控制的容器...

    HttpClient以及获取页面内容应用

    压缩包中含有多个文档,从了解httpclient到应用。 httpClient 1httpClint 1.1简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持...

    java面试题实践收集及答案详解

    - **项目经验**:准备好介绍自己参与过的项目,特别是遇到的技术挑战和解决方案。 - **沟通技巧**:清晰地表达自己的想法,积极倾听面试官的问题,并给出有针对性的回答。 - **行为面试**:准备STAR法则(Situation...

    php网络开发完全手册

    15.5 常见问题与解决方案 259 15.6 小结 261 第16章 数据库中的程序逻辑 262 16.1 数据库程序逻辑与PHP程序逻辑的分体 16.1 设计原则 262 16.2 数据库中的程序逻辑与数据的关系 262 16.3 存储过程的设计 263 16.3.1 ...

    客户端状态管理对象

    对于敏感数据,应避免在客户端存储,而优先考虑服务器端的解决方案,如ASP.NET中的ViewState、Session或Application对象。 在.NET框架的不同版本中,客户端状态管理的支持有所不同。例如,.NET 1.1和2.0开始支持...

    PHP+jquery实时显示网站在线人数的方法

    具体实现分为以下几个步骤: 1. 页面结构定义:首先在HTML页面中定义一个用于显示在线人数的容器,通常是一个带有`span`标签的`div`元素。例如: ```html 当前在线:&lt;span id="number"&gt;&lt;/span&gt; ``` 2. jQuery动画...

Global site tag (gtag.js) - Google Analytics