作web经常须要考虑session过时的问题,session过时就让页面跳转到登陆界面去,可是存在这样一个问题,当页面过时后,用户请求后台的方式有两种:传统方式和异步请求方式,传统方式倒好解决,请求到后台,拦截到过时的操做,直接跳转,可是异步请求不会刷新整个页面,所以对session过时的处理也不能按往常的方式,须要另外的操做。 java
具体思路:拦截器中判断是否为ajax请求 —— 是ajax请求则返回一个消息 ——页面添加一个全局的ajax处理事件,对消息进行判断,若是是报告session过时,则location到登陆页面 web
第一步,拦截器判断是否为ajax请求: ajax
if(request.getHeader("x-requested-with")!=null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //是ajax请求,则返回个消息给前台 PrintWriter printWriter = response.getWriter(); printWriter.print("{sessionState:timeout}"); printWriter.flush(); printWriter.close(); }else{ //不是ajax请求,则直接跳转页面 }
$.ajaxSetup({ contentType:"application/x-www-form-urlencoded;charset=utf-8", cache:false , complete:function(data,TS){ //对返回的数据data作判断, //session过时的话,就location到一个页面 } } });这是一个基于jQuery的异步处理机制,完整代码我没写,上次在公司写的代码,带不出来,文章里的代码有些仍是在网上找来粘进去的,凌晨都过了半小时了,太困了,记录下思路而已。