javaweb自定义管理session时间

首先是配置过滤器filter的步骤:

    在web.xml里面配置一个SessionTimeoutFilter,过滤一切以.htm结尾的url请求。配置如下:

    <filter>

        <filter-name>sessionmanager</filter-name>

            <filter-class>com.xx.common.SessionTimoutFilter</filter-class>

        </filter>

        <filter-mapping>

            <filter-name>sessionmanager</filter-name>

        <url-pattern>*.htm</url-pattern>

    </filter-mapping>


然后就是过滤器的核心方法,原理就是在session里面设置一个lastAccessTime变量,保存上次访问的毫秒值,然后每次用

    当前时间的毫秒值 --  上次访问毫秒值,如果大于设置的session时长,则表示过期了:

public void dofilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {

    //判断是否超过规定时间没有访问

    long SESSION_TIMEOUT = 30*60*1000L;//session保存时长为30分钟,单位毫秒

    if (SESSION_TIMEOUT >= 1L) {

        HttpSession session = request.getSession();

        //获取当前时间

        long crrentTime = System.currentTimeMillis();

        //上次访问时间

        Object obj = session.getAttribute("lastAccesTime");

        long lastAccesTime = (obj == null ? crrentTime : ((Long) obj).longValue());

    

        if (crrentTime - lastAccesTime <= SESSION_TIMEOUT) {//当前时间减去上次访问的时间,大于在线时长,则表示session过期了

            // nosession 参数用在定时刷新请求上,不记录上次访问时间

            session.setAttribute("lastAccesTime", crrentTime);

        } else {

            session.invalidate();

        }

    }

}


转载于:https://my.oschina.net/u/2282932/blog/499484

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值