java判断session过期_session失效时间设置、过期处理、ajax同步异步请求处理

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';

}

}

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值