最近在开发后台管理系统,前台使用了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
分享到:
相关推荐
解决ext异步跳转问题,解决过滤器的问题
NULL 博文链接:https://8366.iteye.com/blog/544437
EXT异步提交FORM表单的使用和,以及EXT配合struts2,sprint2.5进行前台和后台的交互解释和运用.....
使用filter来做后台,Ext.Ajax.on('requestcomplete', checkUserSessionStatus, this);用requestcomplete这个方法来异步判断session是否已经失效了
Ext 异步加载添加 删除节点 修改combobox选择项,相当好的东西,值得参考!希望对你有用!
界面 ext 4.1 mvc框架 动态加载控制层 后台session 过期处理
ext中session失效,页面跳转到登陆页的实现
包含一些EXT平时使用中常遇到的问题,以及解决方案
Ext.ux.tree.treegrid异步加载,点击节点加载数据
NULL 博文链接:https://xnbhnly.iteye.com/blog/1337392
本软件实现了一个机构管理的小例子,可以点击左边树节点在右边的Grid中显示该节点的下属机构,并提供增删查改功能,主要包括JS文件和生成动态树所需要的JSON格式的数据的JAVA和jsp文件,商业逻辑请自己负责完成
自己扩展的异步分页bbar,对大数据量表的查询很有帮助
用Ext实现报表中的核心问题解决方案, X和Y轴注释, 已经竖着现在Y轴名称
在js里面,偶尔会遇见需要多个异步按照顺序执行请求,又不想多层嵌套,,这里和promise.all的区别在于,promise或者Jquery里面的$.when 是同时发送多个请求,一起返回,发出去的顺序是一起;这里是按照顺序发请求 ...
ssh+ext代码和整合方案
EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT...
asdext extext extext extext extext extext extext extext extext extext extext extext extext extext ext
ext实例 ext操作步骤,页面布局,创建窗口,ext基本表格介绍,
NULL 博文链接:https://syzdcs.iteye.com/blog/1239775