`
120153216
  • 浏览: 62030 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Session超时后,Ajax请求处理方式

    博客分类:
  • ajax
 
阅读更多

传统的基于B/S的应用中,Session会话超时后通常是跳转到应用的首页,但Ajax请求的处理方式有些不同,下面简单介绍一下Ajax请求的Session超时处理(超时后返回首页)

1.首先创建一个Filter

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AjaxSessionTimeoutFilter implements Filter {

	public void destroy() {

	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		// 判断session里是否有用户信息
		if (req.getSession().getAttribute("SPRING_SECURITY_CONTEXT") == null){
			// 如果是ajax请求响应头会有,x-requested-with;
			if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
				res.setStatus(911);//表示session timeout
			}else{
				chain.doFilter(req, res);
			}
		}else{
			chain.doFilter(req, res);
		}
	}

	public void init(FilterConfig chain) throws ServletException {

	}
}

 2.在web.xml中增加以下配置

<filter>
	<filter-name>ajaxSessionTimeout</filter-name>
	<filter-class>org.tshark.framework.web.filter.AjaxSessionTimeoutFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>ajaxSessionTimeout</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 3.设置Ajax调用全局参数

$.ajaxSetup({
	contentType : "application/x-www-form-urlencoded;charset=utf-8",
	complete : function(xhr, textStatus) {
		$.ts.hideLoading();
		//session timeout
		if (xhr.status == 911) {
			window.location = rootPath + "/";//返回应用首页
			return;
		}
	}
});

 

分享到:
评论

相关推荐

    Ajax请求session超时处理流程

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

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

    最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html:&lt;html&gt;[removed]window.open(‘http://192.168.0.118:8080/welcomeAction/loginUI.do’,’_top’);...

    Spring Boot Redis Session 共享(Ajax 跨域)

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

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

    在Web开发中,Session超时处理是一个常见的需求,特别是在用户长时间无操作或系统设定的特定时间后,为了保护用户的数据安全,系统会自动结束用户的会话。对于传统的HTTP请求,服务器端可以通过重定向来提示用户重新...

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

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

    JSPsession超时提示

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

    ajax请求Session失效问题

    最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html: &lt;html&gt; [removed]window.open('http://192.168.0.118:8080/welcomeAction/loginUI.do','_top'); ...

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

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

    Javaweb项目session超时解决方案

    Javaweb项目Session超时解决方案 在Java Web开发中,Session机制为我们提供了许多方便,...解决Javaweb项目Session超时问题需要对所有的/web/请求进行登录拦截,配置Session超时时间,并使用拦截器来处理后端请求。

    Ajax请求session失效该如何解决

    但针对Ajax请求,由于其异步性质,处理Session失效的方式略有不同。 标题和描述中提到的问题在于,Ajax请求可能不会像普通HTTP请求那样经过完整的过滤器链,因此需要特别处理。以下是如何解决Ajax请求时Session失效...

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

    总结来说,实现Webix+Spring MVC环境下Session超时跳转登录页面的关键在于,前端扩展Webix的Ajax请求处理,添加对Session超时的检查,并在检测到超时后使用JavaScript进行页面重定向;后端则需在Spring MVC的拦截器...

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

    5. **登出功能**:用户主动点击登出按钮时,前端向服务器发送登出请求,服务器接收到请求后清除与该session关联的所有用户信息,同时清除客户端的session ID(即删除cookie)。 6. **安全考虑**:为了防止恶意用户...

    session timeout/logout using php and AJAX :

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

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

    总的来说,这个函数库提供了一种高效且灵活的方式来监控和显示Web网页的Session超时情况,它可以帮助开发者更好地理解和优化用户在网站上的活动。通过客户端JavaScript实现,既减轻了服务器的压力,也提高了反馈的...

    Session过期后自动跳转到登录页面的实例代码

    如果Session已经过期,我们可以设置响应的状态,对于Ajax请求,可以设置超时状态;对于普通页面请求,可以返回一个提示信息,并重定向到登录页面。例如: ```java public class SessionFilter implements Filter { ...

    session过期问题

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

    ext session失效 页面跳转

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

Global site tag (gtag.js) - Google Analytics