1.在web.xml中加入session超时失效设置:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
2.在Spring-mvc(Spring配置文件中)加入
<!--配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有URL -->
<mvc:mapping path="/**"/>
<bean class="com.bigdata.fxzcbx.common.loginIntercepter"></bean>
</mvc:interceptor>
</mvc:interceptors>
<mvc:default-servlet-handler/>
3.然后loginIntercepter 中implements(实现) HandlerInterceptor
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
SysUser sysUser = (SysUser) request.getSession().getAttribute("SESSION_SYS_USER");
String requestUri = request.getRequestURI();
if(request.getUserPrincipal()!=null){
return true;
}
String totalUrl=String.valueOf(request.getRequestURL());
if (sysUser == null) {
//设置session超时状态发送ajax请求时需要判断该参数也就是超时跳转需要用到
response.addHeader("sessionstatus", "timeOut");
System.out.println("========totalUrl:"+totalUrl+"============");
if("/ACM/user/login".equals(requestUri)){return true;}
response.sendRedirect("/ACM/user/login");
return false;
}
return true;
}
4.前台jsp页面加入
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<c:set var="serverUrl" value="${pageContext.request.requestURL}"/>
<!--发送ajax请求的时候判断session是否有效-->
<script type="text/javascript">
$(document).ajaxComplete(function(event, xhr, settings) {
var url="${serverUrl}";
if(xhr.getResponseHeader("sessionstatus")=="timeOut"){
if(url.indexOf("127.0.0.1")>=0||url.indexOf("localhost")>=0){
window.location.href="${ctx}/user/login";
}
else{
window.location.href="${ctx}/user/login_cas";
}
}
});
</script>
是标红部分相对应的
ok这样就大功告成了!