`
Jack-chen
  • 浏览: 69200 次
  • 性别: 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返回到客户端时刚好超时了.怎么搞?

相关推荐

    智慧酒店项目智能化系统汇报方案qy.pptx

    智慧酒店项目智能化系统汇报方案qy.pptx

    基于C语言编写的高并发Epoll服务器.zip

    基于C语言编写的高并发Epoll服务器.zip

    liba2ps1-4.14-bp156.5.5.ppc64le.rpm

    liba2ps1-4.14-bp156.5.5.ppc64le

    基于matlab实现囚徒困境中的博弈策略的模拟:尝试了采用几种策略进行博弈使最终双赢的概率变大.rar

    基于matlab实现囚徒困境中的博弈策略的模拟:尝试了采用几种策略进行博弈使最终双赢的概率变大.rar

    毕业设计:springboot的乐器社区网站设计与实现(源码 + 数据库 + 说明文档)

    毕业设计:springboot的乐器社区网站设计与实现(源码 + 数据库 + 说明文档) 2相关技术介绍 3 2.1 MySQL数据库简介 3 2.2 springboot编程技术 3 2.3 VUE框架 3 2.4 B/S结构 4 3系统可行性分析 5 3.1概况 5 3.2可行性研究的前提 5 3.3可行性分析 6 3.3.1技术的可行性 6 3.3.2经济的可行性 6 3.3.3操作可行性 6 3.3.4法律的可行性 7 3.4设计的基本思想 7 3.5性能需求 7 3.5.1系统的安全性 7 3.5.2数据的完整性 7 4 系统设计 9 4.1总体设计 9 4.2数据库的分析与设计 9 4.3数据库表 10 第五章 系统功能实现 12 5.1 乐器社区网站首页界面 12 5.2 乐器信息列表界面 12 5.3管理员管理界面 13 5.4新建乐器信息界面 14 5.5二手商品购买界面 14 6 系统测试 15 6.1测试说明 15 6.2功能测试 15 6.3可用性测试 15 6.5性能测试 16 6.6用例测试 16 6.7测试结果 16

    2024-2030全球及中国鼓机踏板行业研究及十五五规划分析报告.docx

    2024-2030全球及中国鼓机踏板行业研究及十五五规划分析报告

    毕业设计:基于springboot的中小企业财务管理系统(源码 + 数据库 + 说明文档)

    毕业设计:基于springboot的中小企业财务管理系统(源码 + 数据库 + 说明文档) 2 开发技术简介 6 2.1 基于B/S结构开发 6 2.2 jsp语言简介 6 2.3MYSQL简介 6 2.4 eclipse工具 7 3 需求分析 7 3.1 可行性分析 7 3.1.1 经济可行性 7 3.1.2 技术可行性 7 3.1.3 操作可行性 7 3.2 功能需求分析 8 3.3 非功能需求分析 8 4 系统设计 9 4.1 数据库设计 9 4.2 系统模块总体设计 10 5 系统详细设计 10 5.1 后台登录页面 10 5.2 管理员信息 11 5.3 财务人员信息 11 5.4 资产负债 12 5.5 税收管理 12 6 系统测试 13 6.1 测试的目的 13 6.2 测试的方法 13 6.3 测试的重要性 14 6.4 测试内容 14 6.5 测试结果 14

    基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip

    基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构

    基于C#的开源音乐播放器MetroPlayer.zip

    基于C#的开源音乐播放器MetroPlayer.zip

    MD5哈希算法的C++实现(兼容大端字节序的CPU)

    MD5哈希算法的C++实现(兼容大端字节序的CPU) 测试代码 #include<iostream> #include<iomanip> #include"md5.c" int main() { using namespace std; u8 $finalHash[16] = {}; const char* str = "a"; //调用MD5 int ret = MD5((u8*)str, strnlen_s(str, INT_MAX), $finalHash); cout << ret << "\n\n"; //输出结果 for (int i = 0; i < 16; i++) { cout << hex << setw(2) << setfill('0') << int($finalHash[i]); } cout << "\n\n"; return 0; }

    2024新版Java基础从入门到精通全套视频+资料下载

    2024新版Java基础从入门到精通全套视频+资料下载

    51单片机输出PWM波,可调频率、占空比

    项目基于Proteus仿真,使用at89c52作为主控芯片,输出PWM波,通过按键设置PWM波的频率和占空比,并且将频率和占空比显示在数码管上。

    2024年全球油性皮肤保湿霜行业总体规模、主要企业国内外市场占有率及排名.docx

    2024年全球油性皮肤保湿霜行业总体规模、主要企业国内外市场占有率及排名

    Windows系统下安装与配置Neo4j的步骤

    附件是Windows系统下安装与配置Neo4j的步骤,包含具体的操作步骤, 文件绿色安全,仅供学习交流使用,欢迎大家下载学习交流!

    Bash脚本优化JAR应用启动与停止流程.zip

    本Bash脚本用于自动化管理Java JAR应用的启动、停止及监控。首先检查JAR进程是否在运行,如在运行则安全终止。随后,使用预设的Java参数启动JAR文件,并将输出和错误日志重定向至日志文件。启动后,脚本持续监控JAR进程状态,确保其在预设时间内成功启动。本脚本提供了灵活的配置和错误处理机制,为Java应用的运维管理带来了便捷与可靠性。

    基于python+django+mysql大数据反电信诈骗管理系统(源码+论文+演示视频)

    【基于Python+Django的毕业设计】基于大数据反电信诈骗管理系统(源码+录像演示+说明).zip 【项目技术】 python+Django+mysql 【实现功能】 主要的功能有文本分析、文本管理、修改密码、个人信息和用户管理。 详见:https://blog.csdn.net/Timi2019/article/details/138357613

    libAvogadro1-1.98.1-bp156.1.1.ppc64le.rpm

    libAvogadro1-1.98.1-bp156.1.1.ppc64le

    261ssm-mysql-jsp 高校学生请假管理系统.zip(可运行源码+数据库文件+文档)

    本系统从使用者角度看,分为学生群体、教师群体。学生及教师都在本系统中录入自己的基本信息。当学生需要请假的时候,可以直接在本系统上填写请假事由、请假时间及返校时间,提交申请即可,然后关注老师的审批进度;当老师在系统上查询到请假信息记录时,审批确认是否同意批复学生的请假意向;当老师审批完成之后,学生就可以看到老师对请假单的审批结果。 高校学生请假管理系统可以让老师和学生在任何时间、任何地点都可以完成请假的整个流程工作。系统会有请假历史记录,学校可以按照月、季度、年度对学生的请假情况进行分析。因此,本系统大大提高了学生请假的效率,同时也有助于学校分析学生请假的情况。 关键字:请假;审批;学生;ssm框架;jsp技术;MySQL数据库;

    智慧物流园区整体解决方案--物流园区、物流枢纽、多式联运qy.pptx

    智慧物流园区整体解决方案--物流园区、物流枢纽、多式联运qy.pptx

    JDK1.6.0-37.rar 解压包

    JDK1.6.0_37.rar 解压包,window64位解压然后配置JDK环境变量使用

Global site tag (gtag.js) - Google Analytics