详情参考: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在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不
本文将详细介绍如何使用全局方法来处理AJAX提交时的Session超时,并跳转到特定页面。 首先,我们可以在服务器端设置一个过滤器(Filter)来检测Session的状态。在Java Web开发中,过滤器可以拦截每个HTTP请求,包括...
2. 可选:自定义Session超时时间: ```java @Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) // 设置为30分钟 public class HttpSessionConfig { } ``` **解决Ajax跨域问题** 1. ...
本文介绍了使用AJAX操作时全局监测用户session失效并解决该问题的方法。AJAX,即异步JavaScript和XML,是一种用于浏览器与服务器之间进行异步通信的技术。它允许网页在无需重新加载的情况下与服务器交换数据,并更新...
在Java Web环境中,处理Ajax请求的Session超时通常涉及两个主要步骤:服务器端的检测和客户端的响应处理。 1. **服务器端检测**: 可以通过实现Servlet Filter或者Interceptor来监测每个请求,判断是否为Ajax请求...
Javaweb项目Session超时解决方案 在Java Web开发中,Session机制为我们提供了许多方便,Session是由浏览器和服务器之间维护的。Session超时理解为:浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠...
我们可以通过全局的`ajaxSend`或`ajaxSetup`事件来监听所有Ajax请求,并在响应返回时检查Session状态: ```javascript $.ajaxSetup({ contentType: "application/x-www-form-urlencoded; charset=UTF-8", status...
设置session超时时间是为了防止恶意用户长时间占用资源,同时也是为了保护用户数据的安全,避免因用户忘记退出而被他人窃取。 **PHP中的Session管理**:在PHP中,可以使用`session_start()`函数开启一个新的会话,`...
每当新的session被创建,我们就在一个全局变量中增加计数;当session被销毁,例如因为用户关闭浏览器或者超时,我们就减少计数。这种方法可以实时反映网站当前的活跃用户数。 定时销毁超时session是保持系统资源...
当客户端的浏览器关闭或者Session超时时,Session将被视为失效。 当EXT应用检测到Session失效,它需要与后端服务器进行通信,确认Session状态。这通常是通过Ajax请求完成的。如果后端返回的响应表明Session已过期,...
这样,无论返回的是JsonResult还是PartialViewResult,我们都可以在客户端统一处理Session超时的情况,避免对每个Ajax请求单独编写处理代码。 总的来说,处理.NET MVC中的Session失效问题需要关注请求类型,区分...
当ajax返回的时候,就是 代码如下: sucess:function()... 您可能感兴趣的文章:ajax动态为a标签href赋值不执行跳转的原因分析及解决ajax提交session超时跳转页面使用全局的方法来处理ajax如何实现页面局部跳转与结果返回
在全局的Ajax配置中监听`requestcomplete`事件,检查返回的响应,如果发现session超时,则弹出提示并重定向到登录页面: ```javascript // 在app中设置Ajax回调处理函数 Ext.Ajax.on('requestcomplete', ...
PHP提供了一套内置的会话处理机制,通过`session_start()`函数开启会话,然后通过`$_SESSION`超级全局数组存储用户的相关信息。当用户成功登录后,我们通常会将他们的用户ID或其他标识符存入`$_SESSION`,以标记用户...
Global.asa是ASP(Active Server Pages)时代的标志性文件,它主要用于存储应用程序级的变量和事件处理程序,比如Session_OnStart和Session_OnEnd,这两个事件分别在用户会话开始和结束时触发,可以用来记录在线人数...
当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...
- `Session_OnStart`:这是ASP中的一个全局事件,每当有新的用户访问站点时,这个事件就会触发。我们可以在事件处理程序中初始化会话计数器。 - `Session_Timeout`:定义了会话的超时时间,超过这个时间没有收到...