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

session超时,处理ajax请求

 
阅读更多
本文转自http://blog.csdn.net/zuxianghuang/article/details/7270489

项目使用的是spring-security安全框架,当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面。但是ajax请求就会有问题。session超时的时候,点击到ajax请求就会弹出一些页面源码文件。

    由于一直都在忙其他的这个问题一直放着。最近有时间了,就把这个问题给解决了。

    首先建了个拦截器,来判断session超时。用户登录后会保存用户信息在一个session里,在session的监听里,session超时会销毁保存在session里的用户信息,而拦截器就通过session里是否有用户信息来判断session超时。(我总觉得这种方法不怎么好。不知还有什么更好的办法。)

   拦截器是spring-mvc的拦截器,在拦截器里判断是不是ajax请求:

public boolean preHandle(HttpServletRequest request,
             HttpServletResponse response, Object handler) throws Exception
     {
         if (request.getSession().getAttribute("user") == null)//判断session里是否有用户信息
            {
             if (request.getHeader("x-requested-with") != null
                     && request.getHeader("x-requested-with")
                             .equalsIgnoreCase("XMLHttpRequest"))//如果是ajax请求响应头会有,x-requested-with;
             {
                 response.setHeader("sessionstatus", "timeout");//在响应头设置session状态
                 return false;
             }
             
         }
         return true;
     }

这样,如果session超时,而且是ajax请求,就会在响应头里,sessionstatus有一个timeout;

再用一个全局的方法来处理,session超时要跳转的页面。
jquery 可以用$.ajaxSetup 方法,ext也有类似的方法
//全局的ajax访问,处理ajax清求时sesion超时
         $.ajaxSetup({ 
             contentType:"application/x-www-form-urlencoded;charset=utf-8", 
             complete:function(XMLHttpRequest,textStatus){ 
                     var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus,
                     if(sessionstatus=="timeout"){ 
                                 //如果超时就处理 ,指定要跳转的页面
                                         window.location.replace("${path}/common/login.do"); 
                                 } 
                      } 
             } 
           });

分享到:
评论
1 楼 sunyard_lm 2014-03-13  
正是我所困惑的,看来IT技术方面没有做不到的啊,只有自己不会的。

相关推荐

    Ajax请求session超时处理流程

    Ajax请求session超时处理流程 java服务器端处理: SessionValidateFilter中修改: if (ServerInfo.isAjax(request)) { request.setAttribute("statusCode", 301); request.setAttribute("message", "Session ...

    完美解决ajax访问遇到Session失效的问题

    现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不

    ajax请求Session失效问题

    现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象

    Web 开发中Ajax的Session 超时处理方法

    在 Java Web 开发中,当session超时的情况下,普通页面的跳转好处理。关于Ajax的请求超时处理,就需要特殊处理下了。 先写一个统一的过滤器,或者拦截器,针对Ajax请求进行过滤处理,下面示例以Filter为例: ...

    ajax提交session超时跳转页面使用全局的方法来处理

    如果session超时,而且是ajax请求,就会在响应头里。再用一个全局的方法来处理,session超时要跳转的页面

    webix+springmvc session超时跳转登录页面

    这里模仿jquery的处理方式实现webix的ajax请求session超时跳转。 具体的做法: 1、查看webix.js源码发现webix.ajax只有请求前的监听函数 “onBeforeAjax”, 要做到获取返回状态跳转登录页面必须要有个返回的监听...

    重写 ajax 实现 session 超时跳转到登录页面实例代码

    主要介绍了重写 ajax 实现 session 超时跳转到登录页面实例代码,需要的朋友可以参考下

    SessionTimeOutAjaxRequest:当浏览器触发 Ajax 请求时,如何检测用户会话超时?

    这是一个 Ajax Session Expiration 处理的演示项目。 这个demo是对以下文章的支持 [Spring Security 第六部分:Ajax 调用的会话超时处理] ( ) 安装 安装 使用 mvn clean install 编译项目 从 Maven 运行 Jetty:...

    登录超时给出提示跳到登录页面(ajax、导入、导出)

    主要介绍了登录超时给出提示跳到登录页面(ajax、导入、导出)的相关资料,需要的朋友可以参考下

    session-timeout-prompter:在会话即将超时时提示用户,并允许他们扩展会话

    会话超时提示Rails 5 Engine在会话即将超时时...session_timeout_prompter需要css: *= require session_timeout_prompter注意:当前依赖jQuery进行ajax /事件处理。用法在布局或任何要显示超时提示的页面上的body标签

    db:db 模块的 Kanso 包

    数据库模块 这包含处理 CouchDB 的核心函数。 这包括文档 CRUD 操作、查询视图和... 这被 session 模块监听以帮助检测 session 超时等。 var db = require ( "db" ) ; db . on ( 'unauthorized' , function ( req ) {

    HttpClient以及获取页面内容应用

    6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。 7. 插件式的自定义认证方案。 8. 便携可靠的套接字工厂使它更容易的使用第三方解决方案。 9. 连接管理器支持多线程应用。支持设置...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

     国内知名的高端IT技术作家,已出版《Spring 2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts 2权威指南》、《Ruby On Rails敏捷开发最佳实践》等著作。 目录: 第0章 学习Java...

    Nginx安装包

    启动tomcat1,在浏览器中输入localhost:8080,进入我们的登录页面,登录页面代码就不贴出了,就是ajax提交而已。输入我们的用户名和密码。登录。看到我们登录成功了,用户个人中心能成功显示我们的用户名。 再看看...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    DWR.xml配置文件说明书(含源码)

    “scope参数允许你配置creator的生命周期,共有以下几个选项:application,session,request,page.这些参数对于用过jsp或servlet的开发人员并不陌生. 3.1 Uing static methods 如果你想远程调用一个creator的静态方法,...

    ASP.NET4高级程序设计(第4版) 3/3

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

Global site tag (gtag.js) - Google Analytics