`

session超时之后 ajax请求

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


当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面。但是ajax请求就会有问题。session超时的时候,点击到ajax请求就会弹出一些页面源码文件。

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

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

   拦截器是spring-mvc的拦截器,在拦截器里判断是不是ajax请求:
[java] view plaincopy

    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也有类似的方法
[javascript] view plaincopy

    //全局的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请求session超时处理流程 java服务器端处理: SessionValidateFilter中修改: if (ServerInfo.isAjax(request)) { request.setAttribute("statusCode", 301); request.setAttribute("message", "Session ...

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

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

    Spring Boot Redis Session 共享(Ajax 跨域)

    - `demo2`可能是对`demo1`的扩展,增加了CORS配置,允许跨域的Ajax请求访问服务端资源。 总结,通过Spring Boot结合Redis,我们可以实现高效的分布式Session共享,确保用户会话在多服务器环境下的一致性。同时,...

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

    总结来说,处理Ajax请求中的Session超时问题,需要服务器端能够识别并标记超时的Ajax请求,同时客户端需要能够正确响应并处理这些标记。这样的设计既保持了用户体验的连续性,又确保了系统的安全性。在实际项目中,...

    JSPsession超时提示

    ### JSP Session超时提示知识点解析 #### 一、背景介绍 在Web应用程序中,`session` 是一种常用的技术手段,用于保存用户的状态信息。它能够帮助开发者在多个页面请求之间保持用户的数据一致性。然而,为了提高安全...

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

    这里提到的主题是关于如何在AJAX请求中处理Session超时,并使用全局的方法进行跳转。下面我们将深入探讨这个话题。 首先,我们来看在过滤器中处理Session超时的代码片段。过滤器是Servlet技术中的一种机制,可以在...

    ajax请求Session失效问题

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

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

    后端过滤器负责检测并处理Session超时,前端通过监听Ajax错误事件,捕获302状态码并模拟页面跳转,确保无论用户是通过常规链接还是Ajax请求,一旦Session超时都能被正确引导到登录页面。这种做法不仅维护了用户操作...

    Javaweb项目session超时解决方案

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

    Ajax请求session失效该如何解决

    关键的一步是,当检测到Ajax请求时,我们不是重定向,而是通过设置响应头(`sessionstatus`)告知前端Session已超时: ```java if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with...

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

    然而,当Session超时,Spring MVC不会直接向Ajax请求返回重定向信息,因为Ajax请求通常是异步的,它不支持直接的页面重定向。 解决这个问题的方法是,我们需要在Webix的Ajax请求处理中添加对Session超时的检测和...

    session timeout/logout using php and AJAX :

    之后的每次请求,客户端都会携带这个session ID,服务器根据ID找到对应的session数据,实现用户状态的保持。 **会话超时(Session Timeout)**是指用户在一定时间内未与网站交互,系统自动认为用户已离线并结束其...

    在线人员 ajax聊天室 关闭浏览器和登出控制使session失效

    当心跳请求到达服务器时,服务器会检查session是否超时,若超时则清除session中的用户信息。 4. **关闭浏览器处理**:由于浏览器关闭时不会主动发送任何请求,服务器无法直接感知。通常需要在前端设置事件监听器,...

    一个用客户端js脚本函数进行网页Session超期统计个数显示函数库

    在实际应用中,这种Session超时统计对于网站管理员尤其有用,他们可以实时了解在线用户的活跃状态,以及可能因Session超时导致的用户体验问题。同时,对于用户来说,如果设计得当,也可以作为一种提醒机制,避免因为...

    thinkphp5.0-php登录超时检测功能的类

    例如,我们可以在每个页面加载时发送一个定时的Ajax请求,如果在设定的时间间隔内没有收到新的请求,前端可以提示用户登录已超时: ```javascript // 假设超时为30分钟,设置定时器每5分钟发送心跳请求 var ...

    session过期问题

    2. **JavaScript心跳检测**:客户端可以通过定期发送Ajax请求(心跳检测)来保持Session活动。每当服务器接收到心跳请求时,就会刷新Session的过期时间。这种方法可以避免用户因为长时间无操作而导致Session过期,但...

    ext session失效 页面跳转

    这通常是通过Ajax请求完成的。如果后端返回的响应表明Session已过期,EXT应用可以触发一个事件,该事件负责处理页面的跳转。 实现这个功能,开发者通常会在EXT应用中的某个全局或关键位置(如路由控制器)设置一个...

Global site tag (gtag.js) - Google Analytics