后台拦截器:
/**
* 拦截器
*/
public class SystemInterceptor extends HandlerInterceptorAdapter{
private static Logger log = LogManager.getLogger();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception{
String uri = request.getRequestURI();
log.debug("Pre-handle url="+uri);
if (uri.startsWith(request.getContextPath()+"/login/tologin") ||
uri.startsWith(request.getContextPath()+"/login/loginPage") ||
uri.startsWith(request.getContextPath()+"/login/verifyCodeImg")) {
log.debug(uri + " 不进行拦截");
}else{
//session失效,到登录页面
HttpSession session = request.getSession();
String userId = (String) session.getAttribute(Constant.SESSION_USER_NAME_STRING);
if(userId == null || userId.equals("")){
//AJAX方法访问
if (handler instanceof HandlerMethod) {
if (((HandlerMethod) handler).getMethod().isAnnotationPresent(ResponseBody.class)) {// 有权限控制的就要检查
//response.sendRedirect(request.getContextPath()+"/ajaxSessionOut.txt");
//response.sendRedirect(request.getContextPath());
response.getWriter().print("SESSION_OUT");
}else{
//非ajax请求,页面跳转请求
response.sendRedirect(request.getContextPath());
}
}else{
//非ajax请求,页面跳转请求
response.sendRedirect(request.getContextPath());
}
log.debug("SESSION 失效 返回登陆页面");
return false;
}
}
return true;
}
private HandlerMethod HandlerMethod(Object handler) {
// TODO Auto-generated method stub
return null;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception{
//logger.warn("Post-handle");
//System.out.println("Post-handle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){
//logger.warn("After completion handle");
//System.out.println("After completion handle");
}
}
前台ajax每次请求都会执行的一段js
$(document).ajaxComplete(function(event, xhr, settings){
if(xhr.responseText && xhr.responseText == "SESSION_OUT"){
//alert("SESSION_OUT");
//ajax 访问 session 失效
window.location.href = "**********";//这边写跳转登录页面网址
}
});