session过期登录跳转问题:
1、设置session过期时间:(1)tomcat配置文件web.xml下设置(30分钟)
30
(2)工程web.xml下设置(15分钟)
15
(3)代码
session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效
2、登录时在登录的controller中记录用户名密码request.getSession().setAttribute(USERNAME, “admin”);
3、判断session是否失效web.xml中设置拦截器
core-performance
com.platform.framework.web.performance.filter.PerformanceMonitorFilter
threshold
1000
PerformanceMonitorFilter.java
import java.io.IOException;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
public class PermissionFilter implements Filter {
private static final String USERNAME = "admin";
private final static String LOGIN_URL = "/login.html";
private final static String NO_PERMISSION_URL = "/noPermission.html";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//初始化参数
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
if(request.getSession().getAttribute(USERNAME) == null);{
//session过期处理
sendRedirectIncludeAjax();
return;
}
else//未过期跳转到下一个拦截器
chain.doFilter(request, response);
}
private void sendRedirectIncludeAjax(HttpServletRequest request, HttpServletResponse response) throws IOException {
if ("XMLHttpRequest".equalsIgnoreCase(((HttpServletRequest) request).getHeader("X-Requested-With"))) {//ajax请求为异步
response.setHeader("sessionStatus", "timeout");
return;
} else {
response.sendRedirect(LOGIN_URL);//同步请求,直接跳转到登录页面
return;
}
}
@Override
public void destroy() {
}
}
4、异步ajax操作--session过期处理/**
* 设置AJAX请求遇到Session过期时处理动作(对所有ajax设置全局参数,即所有ajax请求都会执行此操作)
*/
$.ajaxSetup({
complete: function(xhr,status) {
var sessionStatus = xhr.getResponseHeader('sessionStatus');
if(sessionStatus == 'timeout') {
var top = getTopWinow();
var yes = confirm('由于您长时间没有操作, session已过期, 请重新登录');
if (yes) {
top.location.href = '/login.html';
}
}
}
});