欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-04-01 22:45:34
本文主要向大家介绍了springmvc拦截器实现:当用户访问网站资源时,监听session是否过期的代码,具体如下: 一、拦截器配置

本文主要向大家介绍了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之用户查询代码详解、等,如有不足之处,欢迎留言指出。小编会及时进行更改,感谢朋友们对本站的支持!