`
hbldw521
  • 浏览: 30197 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

ajax注册全局事件解决ajax提交session超时

 
阅读更多

详情参考:http://blog.csdn.net/zuxianghuang/article/details/7270489 

 首先建了个拦截器,来判断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");                                    

 }                         

 }                 

}              

 });

分享到:
评论

相关推荐

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

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

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

    本文将详细介绍如何使用全局方法来处理AJAX提交时的Session超时,并跳转到特定页面。 首先,我们可以在服务器端设置一个过滤器(Filter)来检测Session的状态。在Java Web开发中,过滤器可以拦截每个HTTP请求,包括...

    Spring Boot Redis Session 共享(Ajax 跨域)

    2. 可选:自定义Session超时时间: ```java @Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) // 设置为30分钟 public class HttpSessionConfig { } ``` **解决Ajax跨域问题** 1. ...

    ajax 操作全局监测,用户session失效的解决方法

    本文介绍了使用AJAX操作时全局监测用户session失效并解决该问题的方法。AJAX,即异步JavaScript和XML,是一种用于浏览器与服务器之间进行异步通信的技术。它允许网页在无需重新加载的情况下与服务器交换数据,并更新...

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

    在Java Web环境中,处理Ajax请求的Session超时通常涉及两个主要步骤:服务器端的检测和客户端的响应处理。 1. **服务器端检测**: 可以通过实现Servlet Filter或者Interceptor来监测每个请求,判断是否为Ajax请求...

    Javaweb项目session超时解决方案

    Javaweb项目Session超时解决方案 在Java Web开发中,Session机制为我们提供了许多方便,Session是由浏览器和服务器之间维护的。Session超时理解为:浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠...

    Ajax请求session失效该如何解决

    我们可以通过全局的`ajaxSend`或`ajaxSetup`事件来监听所有Ajax请求,并在响应返回时检查Session状态: ```javascript $.ajaxSetup({ contentType: "application/x-www-form-urlencoded; charset=UTF-8", status...

    session timeout/logout using php and AJAX :

    设置session超时时间是为了防止恶意用户长时间占用资源,同时也是为了保护用户数据的安全,避免因用户忘记退出而被他人窃取。 **PHP中的Session管理**:在PHP中,可以使用`session_start()`函数开启一个新的会话,`...

    day18 监听器 统计在线人数,定时销毁超时session,钝化活化session,在线列表显示和踢人功能防止用户自动登录,在线支付

    每当新的session被创建,我们就在一个全局变量中增加计数;当session被销毁,例如因为用户关闭浏览器或者超时,我们就减少计数。这种方法可以实时反映网站当前的活跃用户数。 定时销毁超时session是保持系统资源...

    ext session失效 页面跳转

    当客户端的浏览器关闭或者Session超时时,Session将被视为失效。 当EXT应用检测到Session失效,它需要与后端服务器进行通信,确认Session状态。这通常是通过Ajax请求完成的。如果后端返回的响应表明Session已过期,...

    详解.net mvc session失效问题

    这样,无论返回的是JsonResult还是PartialViewResult,我们都可以在客户端统一处理Session超时的情况,避免对每个Ajax请求单独编写处理代码。 总的来说,处理.NET MVC中的Session失效问题需要关注请求类型,区分...

    AJAX跳转路径代码

    当ajax返回的时候,就是 代码如下: sucess:function()... 您可能感兴趣的文章:ajax动态为a标签href赋值不执行跳转的原因分析及解决ajax提交session超时跳转页面使用全局的方法来处理ajax如何实现页面局部跳转与结果返回

    界面 ext 4.1 mvc框架 动态加载控制层 后台session 过期处理

    在全局的Ajax配置中监听`requestcomplete`事件,检查返回的响应,如果发现session超时,则弹出提示并重定向到登录页面: ```javascript // 在app中设置Ajax回调处理函数 Ext.Ajax.on('requestcomplete', ...

    php 超时取消登陆

    PHP提供了一套内置的会话处理机制,通过`session_start()`函数开启会话,然后通过`$_SESSION`超级全局数组存储用户的相关信息。当用户成功登录后,我们通常会将他们的用户ID或其他标识符存入`$_SESSION`,以标记用户...

    ASP技术常遇问题解答-不用Global.asa也能实现统计在线人数吗?.zip

    Global.asa是ASP(Active Server Pages)时代的标志性文件,它主要用于存储应用程序级的变量和事件处理程序,比如Session_OnStart和Session_OnEnd,这两个事件分别在用户会话开始和结束时触发,可以用来记录在线人数...

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

    当Session超时,计数器减少。 3. **数据库连接**:为了持久化存储IP访问记录,通常会使用数据库。ASP可以使用ADO(ActiveX Data Objects)来连接和操作数据库,记录IP地址、访问时间等信息。 4. **页面刷新和Ajax*...

    防止一个用户登录多次的方法

    然而,仅依赖Session End事件并不能完全解决问题,因为用户直接关闭浏览器并不会立即触发会话结束。为解决这个问题,有以下两种常见方法: 1. **JavaScript处理**: 使用`window.onbeforeunload`事件监听浏览器...

    各个软件公司面试题答案

    - 关闭浏览器或达到预设的Session超时时间。 3. 关闭Cookie对Session的影响: - 如果客户端禁用Cookie,Session仍可以使用,但默认情况下ASP.NET依赖Cookie来跟踪Session ID。若禁用Cookie,需配置SessionState...

    asp统计在线人数代码

    - `Session_OnStart`:这是ASP中的一个全局事件,每当有新的用户访问站点时,这个事件就会触发。我们可以在事件处理程序中初始化会话计数器。 - `Session_Timeout`:定义了会话的超时时间,超过这个时间没有收到...

Global site tag (gtag.js) - Google Analytics