DWZ-Java框架Ajax请求session超时处理思路:     1)SessionValidateFilter统一验证session是否超时     2)SessionValidateFilter中判断请求是否为ajax请求     3)ajax请求session超时返回一个json {"statusCode":"301", "message":"Session Timeout! Please re-sign in!"}     4)dwz js框架根据statusCode==301,处理是跳转到登陆页面或者弹出登录dialog
-------------------------------------------------------------------
java服务器端处理:     SessionValidateFilter中修改:

if ("XMLHttpRequest".equalsIgnoreCase(request.getHeader("X-Requested-With")) || request.getParameter("ajax") !=null) { PrintWriter out = response.getWriter(); out.println({"statusCode":"301", "message":"Session Timeout! Please re-sign in!"}); } else { response.sendRedirect(response.encodeRedirectURL(this.loginUrl + java.net.URLEncoder.encode(backToUrl, "UTF-8"))); }

-------------------------------------------------------------------
js客户端处理:
session超时跳转到登陆页面还是弹出登录dialog,在DWZ UI初始化时设置:

<script type="text/javascript"> $(function(){ DWZ.init("dwz.frag.xml", { // loginUrl:"loginsub.html", loginTitle:"登录", // 弹出登录对话框 loginUrl:"login.html", // 跳到登录页面 statusCode:{ok:200, error:300, timeout:301}, //【可选】 pageInfo:{pageNum:"pageNum", numPerPage:"numPerPage", orderField:"orderField", orderDirection:"orderDirection"}, //【可选】 debug:false, // 调试模式 【true|false】 callback:function(){ initEnv(); $("#themeList").theme({themeBase:"themes"}); } }); }); </script>

ajax load页面碎片处理:
    ajax请求统一使用dwz的loadUrl()方法,不能使用jquery自带的load().     当客户端调用loadUrl()并且session超时了,跳转到登陆页面或者弹出登录dialog。     session超时弹出登录dialog注意事项:         用一个带屏蔽层的dialog覆盖的整个浏览器.这时浏览器窗口内容不能变,只是上面加了一个登录框和一个背景层。         当用户输入username and password登录成功后,去掉登录框和背景层.这时用户可以继续操作.         登录失败alert出错信息,浏览器窗口内容还是不变.     参考dwz.core.js代码片段

  loadUrl: function(url,data,callback){ var $this= $(this); $.ajax({ type: 'POST', url: url, cache: false, data: data, success: function(response){ var json = DWZ.jsonEval(response); if (json.statusCode==DWZ.statusCode.timeout){ alertMsg.error(DWZ.msg("sessionTimout"), {okCall:function(){ DWZ.loadLogin(); }}); } if (json.statusCode==DWZ.statusCode.error){ if (json.message) alertMsg.error(json.message); } else { $this.html(response).initUI(); if ($.isFunction(callback)) callback(response); } }, error: DWZ.ajaxError }); }

ajax post 表单数据处理:         当客户端ajax提交表单超原理同ajax load     参考dwz.core.js代码片段

  ajaxDone:function (json){ if(json.statusCode == DWZ.statusCode.error) { if(json.message && alertMsg) alertMsg.error(json.message); } elseif (json.statusCode == DWZ.statusCode.timeout) { if(json.message && alertMsg) alertMsg.error(json.message, {okCall:DWZ.loadLogin}); else DWZ.loadLogin(); } else { if(json.message && alertMsg) alertMsg.correct(json.message); }; }

-------------------------------------------------------------------
注意事项:     ajax请求session超时服务器端返回一个json就可以了,其他的就交给dwz js框架来处理,服务器端只要做到ajax请求session超时返回如下json就可以了:

{"statusCode":"301", "message":"Session Timeout! Please re-sign in!"}

转载于:https://www.cnblogs.com/j-ui/p/3217290.html

Ajax请求session超时处理流程(DWZ)相关推荐

  1. Ajax请求session超时解决办法

    Ajax请求session超时解决办法 问题描述 通过ajax发送请求,被后台过滤器或者拦截器拦截的时候,如果session超时,不会直接跳转到登录页面. 解决方案 在过滤器或者拦截器中设置respo ...

  2. Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法

    目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题. 可能需要处理的问题:Session超时.系统500错误.普通的业务错误.权限不足. 同步请求: Session超时,登录拦截器 ...

  3. Ajax请求Session超时解决

    $.ajaxSetup({contentType : "application/x-www-form-urlencoded;charset=utf-8",complete : fu ...

  4. 微信内置浏览器Ajax请求10s超时重发问题的解决方案

    最近在做一个微信公众号的项目,期间遇到一个纠结了几天的问题,就是微信页面上激活一次Ajax,实际执行两次请求,由于现实情况原因,该Ajax请求有时延迟会在20s以上.分析后台日志发现,如果Ajax请求 ...

  5. php ajax session失效,PHP中解决ajax请求session过期退出登录问题

    1.session过期,如果直接是url请求,或者用户在打开的系统页面中直接清除缓存及cookie信息,可直接在php的入口文件中调用以下封装的方法,进行session信息判断以及页面的跳转,如: i ...

  6. ajax去掉session,PHP中解决ajax请求session过时退出登陆问题

    一.session过时,若是直接是url请求,或者用户在打开的系统页面中直接清除缓存及cookie信息,可直接在php的入口文件中调用如下封装的方法,进行session信息判断以及页面的跳转,如: p ...

  7. Extjs6关于Ajax和form表单提交以及store请求session超时的处理方法

    对于Store的处理 每个store配置的时候,配上load监听,加载时处理: usrStore : {model : 'App.model.Usr',autoLoad : false,proxy : ...

  8. shiro处理ajax请求未登录,shiro处理ajax请求session失效跳转

    最近在学习shiro时遇到一个问题,在ajax请求时,若是session失效时,没法正确的跳转登陆页面.在以前的项目中处理的方法是经过自定义一个过滤器来处理,session失效时返回错误码来处理.但由 ...

  9. 处理ajax的session超时

    做web开发时,当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面.但是ajax请求就会有问题.session超时的时候,点击到ajax请求就会弹出一些页面源码文件. 首先建了 ...

最新文章

  1. usaco Camelot
  2. Tensorflow— 下载google图像识别网络inception-v3并查看结构
  3. go 怎么等待所有的协程完成_GO语言基础进阶教程:Go语言的协程——Goroutine
  4. android c 电话联系人,Android 联系人按中文拼音排序
  5. struts-resultType属性
  6. ubuntu1804系统设置在哪里_电销呼叫系统CRM功能设计
  7. 黑客帝国canvas黑客帝国代码雨特效-A5源码
  8. word论文排版,页码和页眉
  9. 计算机公式除,Excel公式除法怎么用?教你四种使用方法
  10. 蒙特卡罗法(Python实现)
  11. 中国近代史知识要点总结
  12. 计算机研究生就业方向之考公
  13. 社群裂变工具有哪些?怎么用?微信如何引流客源呢?
  14. 麒麟系统(Fedora 64)安装谷歌(chrome)浏览器
  15. 利用CUDA流重叠计算和数据传输
  16. 学习笔记(08):区块链应用案例-区块链商业应用-供应链管理
  17. COCOS敌人和AI制作
  18. win10相机_粉丝问答33期:小米手环5什么时候发布;小米2S谷歌相机;小米8充电慢...
  19. 1588的E2E链路延迟测量机制
  20. Monaco Editor教程(八): 实现添加自定义命令,添加自定义菜单action功能

热门文章

  1. java getclass 相等_Java判断2个List集合是否相等(不考虑元素的顺序)
  2. string转map集合_Map、斗地主案例
  3. 逆水寒服务器更新响应超时,逆水寒patcher.zip文件更新失败怎么办 更新文件异常问题解决方法...
  4. linux apache fcgi,编译安装apache2.2对应的mod_proxy_fcgi.so模块步骤,因为使用apache--phpfpm 需要这个...
  5. 布尔类型的值包括( )和( )_布尔类型
  6. exsi vmfs 没了_它是“推粪机”,隔三差五吃一盘,口臭没了排出宿便,肠道变干净...
  7. angularjs与PHP,我应该混合AngularJS与PHP框架吗?
  8. java有参和无参的用处_Java对比有参数和无参数
  9. hadoop(一) 基本介绍
  10. 一行代码值 200 万?雷军公开小米新 Logo 引吐槽