session超时-处理用户是否登陆过滤

后台代码

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

HandlerInterceptorAdapter :spring-MVC过滤器

提高三个方法:

 

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)    
        throws Exception {    
        return true;    
    }    
    public void postHandle(    
            HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)    
            throws Exception {    
    }    
    public void afterCompletion(    
            HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)    
            throws Exception {    
    }   
 

 

preHandle中,访问前  --- 可以进行编码、安全控制等处理

postHandle中,方法访问后(调用了Service并返回ModelAndView,但未进行页面渲染) --- 有机会修改ModelAndView ; 

afterCompletion中,返回处理(已经渲染了页面)  --- 可以根据ex是否为null判断是否发生了异常,进行日志记录 。 

 

public class MyHandlerInterceptor extends HandlerInterceptorAdapter {
	@Override
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
		//一些不需要过滤的连接 登陆方法 等
		String url = request.getRequestURI();
		if(url.endsWith("user/login") ){
			return true;
		}
		if(request.getSession().getAttribute(Constants.USER_INFO_SESSION) == null){  //判断session中,用户信息是否为null,为null表示未登陆
              //判断是否是AJAX访问
			if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { 
					response.setHeader("sessionstatus", "timeout"); 
					return false;
			}else{
				response.sendRedirect(request.getContextPath()+"/index.jsp");  //非AJAX访问,页面跳转
				return false;
			}
		}
		return true;
	}
}

前台 JQuery 和 EXT 框架的AJAX处理

JQuery统一处理

 

//全局的ajax访问,处理ajax清求时sesion超时  
         $.ajaxSetup({   
             contentType:"application/x-www-form-urlencoded;charset=utf-8",   
             complete:function(XMLHttpRequest,textStatus){   
                     var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus,  
                     if(sessionstatus=="timeout"){   
                                 //如果超时就处理 ,指定要跳转的页面  
                                         window.location.replace("${path}/common/login.do");   
                                 }   
                      }   
             }   
           });  

 

 EXT统一处理

 

Ext.Ajax.on('requestcomplete', function(conn, response, optoins) {
	if (response.getResponseHeader) {
		if (response.getResponseHeader('sessionstatus') == 'timeout') {
			window.location.href = 'http://www.baidu.com/';  //如果是过期,跳转到页面
		}
	}
});
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值