`
lym6520
  • 浏览: 705690 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

Ext异步请求session过期解决方案

    博客分类:
  • EXT
阅读更多
    最近在开发后台管理系统,前台使用了Ext框架,在开发过程中,发现session过期时客服端仍然不断的进行了N次请求后才停止,我想很多使用过Ext框架开发的同学都遇到过同样的问题吧!今天我就来说说我的解决方案吧!

    前端通过Ext.Ajax.request的requestcomplete事件来进行session过期验证处理的:
// Default headers to pass in every request
	Ext.Ajax.defaultHeaders = {
	    'Request-By': 'Ext'	//标识ajax请求
	};
	
	// ajax回调函数处理系统退出      
	Ext.Ajax.on('requestcomplete',checkSessionStatus, this);         
	function checkSessionStatus(conn,response,options){
    	var json = Ext.decode(response.responseText);
    	if(typeof json == 'object' 
			&& !json.success 
			&& json.timeout){
			alert("登入超时,系统将自动跳转到登陆页面,请重新登入!");
			top.window.location.href = json.redirectUri;							
		}
	          
	}  


从上面的js代码中,注意下面这行代码:
// Default headers to pass in every request
	Ext.Ajax.defaultHeaders = {
	    'Request-By': 'Ext'	//标识ajax请求
	};



需要设置请求的头信息来标识ajax请求,过滤器在处理请求的时候就是通过请求的头信息Request-By值是否为Ext来判断是否为Ext的异步请求的,然后在做出不同的响应。




最后看看过滤器的处理方式,以下是session超时处理的部分的代码:
String ajaxTag = req.getHeader("Request-By");//Ext
			
			if(ajaxTag == null || !ajaxTag.trim().equalsIgnoreCase("Ext")){
				resp.sendRedirect(this.redirectUri);
			}else{
				resp.addHeader("sessionstatus", "timeout"); 
				Map<String, Object> result = new HashMap<String, Object>();
				result.put("success", false);
				result.put("timeout",true);
				result.put("redirectUri", this.redirectUri);
				PrintWriter out = resp.getWriter();
				out.print(Json.object2Json(result));
				out.flush();
				out.close();
			}



通过判断是否为Ext的异步请求,来做出不同的动作处理:直接跳转到登入页面或输出session过期信息由前台js事件拦截处理。
  • 大小: 16.3 KB
1
10
分享到:
评论
2 楼 jimichan 2012-03-04  
很好的思路
1 楼 melin 2011-01-14  
同样的思路解决这个问题。。。

相关推荐

    ext异步跳转问题(解决过滤器的问题)

    总结一下,解决Ext异步跳转问题的关键在于正确地使用过滤器和处理异步请求的生命周期。在Java后端,过滤器可以拦截请求,根据需要进行处理,如强制跳转。而在Ext JS前端,我们需要监听请求事件,适时响应过滤器设置...

    ext session失效 页面跳转

    这可以通过在后台定期发送心跳请求,然后在接收到Session即将过期的警告时显示一个提示框,让用户选择是否延长Session或立即登录。 总结起来,EXT中的Session失效页面跳转涉及到前后端的协同工作。前端EXT应用需要...

    EXT异步提交FORM表单

    ### EXT异步提交FORM表单知识点详解 #### 一、EXT异步提交FORM表单概述 在现代Web应用开发中,异步提交表单是一种常见的技术手段,它能够提升用户体验,减少页面刷新带来的数据丢失风险,并能有效提高系统的响应...

    ext 异步加载树完整版

    EXT JS的Tree Panel允许开发者配置异步加载数据源,通常通过Ajax请求从服务器获取JSON数据。这样做可以显著减少初始页面加载时间,因为只有用户可以看到的部分会被加载。这种机制也称为延迟加载(Lazy Loading)或按...

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

    前端EXTJS应用中,可以利用Ajax请求的回调函数来处理session过期。在全局的Ajax配置中监听`requestcomplete`事件,检查返回的响应,如果发现session超时,则弹出提示并重定向到登录页面: ```javascript // 在app中...

    extjs session失效解决方案

    使用filter来做后台,Ext.Ajax.on('requestcomplete', checkUserSessionStatus, this);用requestcomplete这个方法来异步判断session是否已经失效了

    Ext2.0.2的Ajax请求拦截示例

    在Ext JS中,Ajax请求是进行异步数据交互的基础,它允许页面在不刷新的情况下与服务器进行通信。本示例将深入探讨如何在Ext2.0.2中实现Ajax请求的拦截,以便在发送请求前或接收响应后执行自定义逻辑。 首先,我们...

    ExtJs异步请求和特殊用途

    ExtJS使用了`Ext.Ajax`对象来处理异步请求。它封装了XMLHttpRequest对象,提供了发送GET、POST、PUT、DELETE等各种HTTP请求的方法。开发者可以通过配置参数,如URL、方法、参数、请求头、回调函数等,定制化请求...

    Extjs 4.1 (MVC) 如何动态加载控制层以及session 过期该如何处理

    这个问题的解决方案通常涉及到前后端的配合。 在后端处理方面,我们可以通过检查请求头(request headers)中的`accept`字段来判断请求是否来自AJAX。如果`accept`字段中不包含`text/html`,那么可以认为这是一个...

    EXT一些小问题的解决方案

    包含一些EXT平时使用中常遇到的问题,以及解决方案

    Ext 异步加载添加 删除节点 修改combobox选择项

    在Ext JS中,异步加载是一种常见的数据处理方式,尤其在构建动态的用户界面时非常有用。本篇文章主要探讨了如何在异步加载的场景下,实现树形控件(TreePanel)中节点的动态添加、删除以及ComboBox选择项的修改。 ...

    ext-basex.js 进行Ext.Ajax.request 同步请求 FF无法正常

    在JavaScript编程中,`Ext.Ajax.request`是...在Firefox中,同步请求可能会遇到问题,`ext-basex.js`可能是解决这个问题的工具或解决方案。最佳实践是避免同步请求,如果必须使用,应采取适当的错误处理和兼容性策略。

    Ext.ux.tree.treegrid异步加载

    ### Ext.ux.tree.TreeGrid 异步加载知识点详解 #### 一、Ext.ux.tree.TreeGrid简介 在ExtJS框架中,`Ext.ux.tree.TreeGrid`组件是一种结合了树形结构与表格显示特性的控件,适用于展示具有层级关系的数据。通过...

    Ext.Ajax.request2.x实现同步请求

    在EXTJS库中,`Ext.Ajax.request`是用于发送Ajax请求的核心方法,它支持异步和同步操作。本文将详细解析如何利用`Ext.Ajax.request`实现同步请求,并探讨其背后的原理和注意事项。 首先,我们需要理解Ajax的本质,...

    EXT异步树和动态表关联

    本软件实现了一个机构管理的小例子,可以点击左边树节点在右边的Grid中显示该节点的下属机构,并提供增删查改功能,主要包括JS文件和生成动态树所需要的JSON格式的数据的JAVA和jsp文件,商业逻辑请自己负责完成

    ext json请求java后台返回集合数据

    标题中的“ext json请求java后台返回集合数据”指的是在Web开发中,前端EXTJS库通过JSON格式发送请求到Java后台,后台处理后返回一个集合(可能是列表或数组)的数据。EXTJS是一个用JavaScript编写的富客户端框架,...

    ExtJS3 实现异步下拉树

    2. **Ajax 数据源**:异步加载数据通常通过Ajax请求实现。需要定义一个`TreeStore`,配置`proxy`为`Ext.data.TreeProxy`,并设置`url`属性指定服务器接口地址,用于获取节点数据。 3. **JsonReader**:数据解析器,...

    ext扩展异步分页bbar

    自己扩展的异步分页bbar,对大数据量表的查询很有帮助

Global site tag (gtag.js) - Google Analytics