SpringMVC拦截器实现监听session是否过期详解

所属分类: 软件编程 / java 阅读数: 28
收藏 0 赞 0 分享

本文主要向大家介绍了SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期的代码,具体如下:

一、拦截器配置

<mvc:interceptors>
  <mvc:interceptor>
    <mvc:mapping path="/**"/>
    <mvc:exclude-mapping path="/user/login"/>  <!-- 不拦截登录请求 -->
    <mvc:exclude-mapping path="/user/logout"/>  <!-- 不拦截注销请求 -->
    <mvc:exclude-mapping path="*.jsp"/>
    <mvc:exclude-mapping path="*.html"/>
    <mvc:exclude-mapping path="*.js"/>
    <mvc:exclude-mapping path="*.css"/>
    <bean class="org.huaxin.interceptor.AccessInterceptor"></bean>
  </mvc:interceptor>
</mvc:interceptors>

二、拦截器编码

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
      Object obj) throws Exception {
    System.out.println("[AccessInterceptor]:preHandle执行");
    HttpSession session = request.getSession();
    ServletContext application = session.getServletContext();
    if(application.getAttribute(session.getId()) == null){  //未登录
      PrintWriter out = response.getWriter();
      StringBuffer sb = new StringBuffer("<script type=\"text/javascript\" charset=\"UTF-8\">");
      sb.append("alert(\"你的账号被挤掉,或者没有登录,或者页面已经过期,请重新登录\")");
      sb.append("window.location.href='/user/logout';");
      sb.append("</script>");
      out.print(sb.toString());
      out.close();
      return false;
    }else{  //已经登录
      return true;
    }
  }

三、总结

1.注意这里使用的拦截器是HandlerInterceptor,你的拦截器需要实现这个接口

2.在你的登录handler里面,要将session保存到application中,方便根据sessionId来判断是否存在session

3.sb.append("window.location.href='/user/logout';"); 这行代码是说,执行注销操作,在你的/user/logout 这个handler里面得把页面解析到登录页,方便重新登录

以上就是本文关于SpringMVC拦截器实现监听session是否过期详解的全部内容,希望对大家有所帮助,感兴趣的朋友可以继续参阅本站:Java监听器的作用及用法代码示例SpringMVC开发restful API之用户查询代码详解springmvc接收jquery提交的数组数据代码分享等,如有不足之处,欢迎留言指出。小编会及时进行更改,感谢朋友们对本站的支持!

更多精彩内容其他人还在看

Java concurrency之锁_动力节点Java学院整理

这篇文章主要为大家详细介绍了Java concurrency之锁的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java8新特性之StampedLock_动力节点Java学院整理

本文从synchronized、Lock到Java8新增的StampedLock进行对比分析,对Java8新特性之StampedLock相关知识感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

Java8新特性之lambda的作用_动力节点Java学院整理

我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值。现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作解开lambda最强作用的神秘面纱。
收藏 0 赞 0 分享

Java8新特性之Base64详解_动力节点Java学院整理

这篇文章主要为大家详细介绍了Java8新特性之Base64的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java8新特性之JavaFX 8_动力节点Java学院整理

这篇文章主要介绍了Java8新特性之JavaFX 8的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

将本地jar包安装进入maven仓库(实现方法)

下面小编就为大家带来一篇将本地jar包安装进入maven仓库(实现方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈Java finally语句到底是在return之前还是之后执行(必看篇)

下面小编就为大家带来一篇浅谈Java finally语句到底是在return之前还是之后执行(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

基于Java并发容器ConcurrentHashMap#put方法解析

下面小编就为大家带来一篇基于Java并发容器ConcurrentHashMap#put方法解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解Spring Boot Profiles 配置和使用

本篇文章主要介绍了详解Spring Boot Profiles 配置和使用,具有一定的参考价值,有兴趣的可以了解一下
收藏 0 赞 0 分享

详解Spring Boot 属性配置和使用

本篇文章主要介绍了详解Spring Boot 属性配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多