使用过滤器来检测session失效

 public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {


        if (debug) {
            log("SessionTimeoutFilter:doFilter()");
        }
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;
        doBeforeProcessing(request, response);


        HttpSession session = req.getSession();
        //用户超时或没有登陆时跳转到登陆页面  
        logger.debug("before doFilter****");
        String uri = req.getRequestURI();
        if (uri.indexOf("sessiontimeout")==-1&&uri.indexOf("SysConfig")==-1&&(session.getAttribute("UserName") == null || session.isNew())) {
            resp.sendRedirect(req.getContextPath()+"/sessiontimeout.jsp");
            //resp.sendRedirect(req.getContextPath()+"/sessiontimeout.jsp"); 不能使用相对路径,不同的页面过来,相对路径会不同
            return;
        }
        Throwable problem = null;
        try {
            chain.doFilter(request, response);
        } catch (Throwable t) {
            // If an exception is thrown somewhere down the filter chain,
            // we still want to execute our after processing, and then
            // rethrow the problem after that.
            problem = t;
            t.printStackTrace();
        }
        logger.debug("after doFilter****");
        doAfterProcessing(request, response);


        // If there was a problem, we want to rethrow it if it is
        // a known type, otherwise log it.
        if (problem != null) {
            if (problem instanceof ServletException) {
                throw (ServletException) problem;
            }
            if (problem instanceof IOException) {
                throw (IOException) problem;
            }
            sendProcessingError(problem, response);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值