Filter实现session超时自动跳转到login页,超过试用期不许登录

新建一个过滤器

package com.autumn.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 是否登录判断
 */
public class CheckLoginFilter implements Filter {

    private String USERID="";

    private String ROOTPATH;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.USERID = filterConfig.getInitParameter("userId").trim();
        this.ROOTPATH = filterConfig.getInitParameter("rootPath");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {

        HttpServletResponse res=(HttpServletResponse)response;
        HttpServletRequest req=(HttpServletRequest)request;
        Object userid=req.getSession().getAttribute(USERID);

        System.out.println("req.getRequestURI():"+req.getRequestURI());

        if(isShakedown(3018,3,16))
        {
            System.out.println("系统试用期已到,请联系商务!");
            res.sendRedirect(ROOTPATH+"?rtnCode=200");
        }else
        {
            if(userid==null||userid.toString().trim().isEmpty())
            {
                //System.out.println("CheckLoginFilter userid:"+userid);
                System.out.println("CheckLoginFilter userId is null");
                res.sendRedirect(ROOTPATH);
            }
            else{
                //System.out.println("CheckLoginFilter chain.doFilter");
                filterChain.doFilter(req, res);
            }
        }
    }

    @Override
    public void destroy() {
        if(this.USERID!=null&&this.USERID.trim().isEmpty())
        {
            this.USERID="";
        }

        if(this.ROOTPATH!=null&&this.ROOTPATH.trim().isEmpty())
        {
            this.ROOTPATH="";
        }
    }

    //试用期判断
    public static boolean isShakedown(int year,int month,int day)
    {
        Date date = new Date();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();// 获取一个Claender实例
        cal.set(year, month-1, day);
        Date endDate;
        try {
            endDate = sf.parse(sf.format(cal.getTime()));
            if (date.getTime() > endDate.getTime()) {
                return true;
            }
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return true;
        }
        return false;
    }
}

web.xml中加入过滤器配置

    <filter>
        <filter-name>loginFilter</filter-name>
        <filter-class>
            com.autumn.filter.CheckLoginFilter
        </filter-class>
        <init-param>
            <param-name>userId</param-name>
            <param-value>USERID</param-value>
        </init-param>
        <init-param>
            <param-name>rootPath</param-name>
            <param-value>/Bookkeeping/login.jsp</param-value>
        </init-param>
    </filter>

猜你喜欢

转载自www.cnblogs.com/aeolian/p/9234357.html
今日推荐