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

jQuery ajax请求处理session过期问题

 
阅读更多

后台扩展一个filter,判断session过期的代码需要自己写,我这里直接就认为session过期了

 

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) res;
		
		String xmlhttprequest = request.getHeader("X-Requested-With");
		if("XMLHttpRequest".equalsIgnoreCase(xmlhttprequest)) { // ajax request
			
			// 判断是否是session过期,如果是执行下边的代码
			try {  
	            response.setCharacterEncoding("UTF-8");  
	            response.setContentType("text/json");  
	            response.setDateHeader("Expires", 0);  
	            PrintWriter out = response.getWriter();  
	  
	            out.println("{\"sessionTimeout\": true}");  
	  
	            out.flush();  
	            out.close();  
	            
	            return;
	        } catch (IOException e) { 
	        	System.out.println(e);
	        } 
		}
		chain.doFilter(req, res);
	}

 客户端对jquery的ajax处理做扩展,代码如下

 

(function() {
	var oldajaxfuc = jQuery.ajax;
	jQuery.extend({
		ajax: function( url, options ){
			// If url is an object, simulate pre-1.5 signature
			if ( typeof url === "object" ) {
				options = url;
				url = undefined;
			}
			
			var oldSuccessFunc = options.success;
			options.success = function(ret) {
				if(ret.sessionTimeout) {
					alert("Session timeout");
					return;
				} else {
					oldSuccessFunc.apply(this, arguments);
				}
			}
			
			oldajaxfuc(url, options);
		}
	});
})();
 
分享到:
评论

相关推荐

    jQuery ajax全局函数处理session过期后的ajax跳转问题

    总结一下,处理Ajax请求中的会话过期问题时,关键在于要在服务器端和客户端共同配合,服务器端通过某种机制识别Ajax请求并返回正确的状态消息,客户端则需要有相应的逻辑来处理这些消息,并作出适当的反应。...

    ajax实现session不过期(避免页面过期的现象)

    需要注意的是,为了使这种方法有效,服务器端的Session过期时间设置需要足够长,要超过AJAX请求的间隔时间。这样,每次AJAX请求都会重置Session的过期时间,从而保持Session一直处于激活状态。如果Session的过期时间...

    JS Ajax请求会话过期处理问题解决方法分析

    总结,处理JS Ajax请求的会话过期问题,关键在于服务器和客户端的协同工作。服务器需要在响应头中添加特定标识,客户端则通过监听错误事件来捕获并处理这些信息。通过这样的机制,我们能够优雅地解决会话过期带来的...

    使用Ajax时处理用户session失效问题的解决方法

    总结来说,处理Ajax请求中的用户session失效问题,需要在后端识别Ajax请求并返回特定的响应头,然后在前端监听并处理这些响应,以便在session过期时提示用户重新登录。通过这种方式,我们可以确保无论用户如何与页面...

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

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

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

    总结来说,处理AJAX请求时的Session超时问题,主要分为两步:一是服务器端检测并标记Session超时,二是客户端监听响应并根据标记进行页面跳转。这种方法可以确保无论用户何时何地发起AJAX请求,一旦Session超时,都...

    【ASP.NET编程知识】div弹出层的ajax登录(Jquery版+c#).docx

    在这个案例中,jQuery用于控制div弹出层的显示和隐藏,以及处理AJAX请求。 2. **AJAX**: AJAX(Asynchronous JavaScript and XML)技术允许前端与后端进行异步通信,即在不重新加载整个网页的情况下更新部分网页...

    ajax 6.7.5.1

    在Ajax调用中,可以继续使用Session来保持用户状态,但需要注意的是,异步请求可能导致Session状态丢失,因此需要正确处理Session过期和并发访问的问题。 4. **Caching.aspx** 缓存是提高Web应用程序性能的有效...

    React如何解决fetch跨域请求时session失效问题

    前言 fetch在reactjs中等同于 XMLHttpRequest,它提供了许多与XMLHttpRequest相同的功能,但被设计成更具可扩展性和高效性。...请注意,fetch 规范与 jQuery.ajax() 主要有两种方式的不同,牢记: 当

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

    成功(success)函数是AJAX请求完成后被调用的函数,它有两个参数,通常分别是服务器返回的数据(data)和状态(textStatus)。 从内容上来看,文章内容的重复性可能是由于OCR扫描时识别错误或漏识别导致的,但核心...

    基于JQuery的用户统一认证系统的设计与实现

    2. **Ajax请求**:编写发送登录请求的Ajax函数,接收服务器返回的认证令牌。 3. **存储令牌**:将令牌存储在本地存储或Cookie中。 4. **验证令牌**:每次请求资源服务器时,检查并发送令牌。 5. **错误处理**:处理...

    Jquery 拖动式验证码(PHP)

    jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。在拖动式验证码中,jQuery主要用于处理滑块的拖动事件。 #### 2.1 HTML结构 首先,我们需要创建HTML结构,包括滑块和目标...

    jqSession的js文件

    jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。它的核心特性包括选择器(用于选取DOM元素)、链式操作(一个方法调用后可以直接接着调用另一个方法)和高效的DOM...

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

    5. **兼容性考虑**:由于Webix的Ajax请求与jQuery的有所不同,可能需要特别处理Webix的回调机制,以确保在Session超时的情况下,能够正确地捕获到错误并执行重定向。 总结来说,实现Webix+Spring MVC环境下Session...

    jquery封装好的验证码

    `jQuery` 是一款广泛使用的JavaScript库,它简化了DOM操作,事件处理,动画以及Ajax交互等任务。本篇文章将详细介绍如何使用已经封装好的jQuery验证码功能,包括其工作原理、实现方式以及如何集成到项目中。 ### 一...

    自己整理的一个导航菜单页面

    当检测到session过期或失效时,通常会提示用户重新登录。在PHP中,可以使用`$_SESSION`数组来存取session值,`session_start()`启动session,`session_destroy()`销毁session。在JavaScript中,通常通过Ajax请求向...

    PHP提交表单失败后如何保留填写的信息

    例如,可以使用 jQuery 库来发送 Ajax 请求: `$.ajax({ type: "post", url: "login.php", dataType:'json', data: 'username='+username+'&password='+password, success: function(json){ $('#result...

Global site tag (gtag.js) - Google Analytics