`
静静的小谱
  • 浏览: 18927 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

让Session失效的三种方法

阅读更多
引用

我们设置SESSION失效的时间,是为了确保在用户长时间不与服务器交互的情况下,可以自动退出登录。本文介绍了三种设置SESSION失效的方法,希望对你有帮助。
   Session对象是HttpSessionState的一个实例。该类为当前用户会话提供信息,还提供对可用于存储信息会话范围的缓存的访问,以及控制如何管理会话的方法。下面介绍设置session失效的几种方法。

  在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。

  具体设置很简单,方法有三种:
 

   (1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。

  这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。

  (2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置

  <!-- 设置session失效,单位分 -->

  <session-config>
          <session-timeout>1</session-timeout>
      </session-config>

  (3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到<session-config>元素,tomcat默认设置是30分钟,只要修改这个值就可以了。

  需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:(1)>(2)>(3)
   在一般系统中,也可能需要在session失效后做一些操作,

  (1)控制用户数,当session失效后,系统的用户数减少一个等,控制用户数在一定范围内,确保系统的性能。

  (2)控制一个用户多次登录,当session有效时,如果相同用户登录,就提示已经登录了,当session失效后,就可以不用提示,直接登录了。

  那么如何在session失效后,进行一系列的操作呢?

  这里就需要用到监听器了,即当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序就可以了。

  监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法
   自己可以继承这个类,然后分别实现。
   sessionCreated指在session创建时执行的方法
   sessionDestroyed指在session失效时执行的方法


给一个简单的例子:
  public class SessionListener implements HttpSessionListener{
    public void sessionCreated(HttpSessionEvent event) {
       HttpSession ses = event.getSession();
       String id=ses.getId()+ses.getCreationTime();
       SummerConstant.UserMap.put(id, Boolean.TRUE); //添加用户
      }
     public void sessionDestroyed(HttpSessionEvent event) {
       HttpSession ses = event.getSession();
       String id=ses.getId()+ses.getCreationTime();
       synchronized (this) {
        SummerConstant.USERNUM--; //用户数减一
        SummerConstant.UserMap.remove(id); //从用户组中移除掉,用户组为一个map
       }
     }
   }

然后只需要把这个监听器在web.xml中声明就可以了

  <listener>
<listener-class>com.demo.SessionListener</listener-class>
</listener>


分享到:
评论

相关推荐

    设置Session失效的几种方法

    本文介绍了设置Session失效的几种方法,包括在主页面或公共页面中设置Session失效时间、在项目的web.xml中设置Session失效时间、直接在应用服务器中设置Session失效时间等。此外,还介绍了如何在Session失效后执行一...

    ext session失效 页面跳转

    当Session失效时,通常会导致用户被重定向到登录页面,以便重新验证其身份。下面将详细讨论EXT Session失效以及如何实现页面跳转至登录页。 首先,EXT是一个JavaScript库,用于构建交互式的、数据驱动的Web应用。它...

    session 失效

    描述中的博文链接指向了一篇关于该主题的博客文章,尽管具体内容没有给出,但我们可以推测博主可能讨论了Session失效的原因、影响以及解决方法。 首先,我们需要理解Session的工作原理。在HTTP协议中,由于其无状态...

    session失效

    ### Session失效详解 在Web应用开发中,会话管理(Session Management)是一项基本且重要的功能。它用于跟踪用户的会话状态,确保用户在与服务器交互过程中保持登录等状态信息的一致性。Session作为会话管理的一种...

    完美解决ajax访问遇到Session失效的问题

    最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html:&lt;html&gt;[removed]window.open(‘http://192.168.0.118:8080/welcomeAction/loginUI.do’,’_top’);...

    session失效重新登录后,返回之前页面,并保留表单数据

    要在Session失效后保留表单数据,有两种常见策略: - **临时存储**:在用户被重定向到登录页面时,将表单数据暂存到服务器的某个地方(如服务器端的内存、数据库或Cookie)。登录成功后,根据存储的数据填充表单。...

    Java中设置session超时(失效)的三种方法

    在Java中,有三种主要的方法来设置Session的超时时间: 1. **在Web容器中设置**: Web容器,如Tomcat,提供了一个全局的配置选项来设定所有应用的默认Session超时时间。在Tomcat的`conf/web.xml`配置文件中,你...

    nginx反向代理导致session失效的问题解决

    一同事求援:后台系统的登录成功了,但不能成功登进系统,仍然跳转到登录页,但同一套代码另一个环境却没有问题。 背景 经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务器上,一个在他本机,两个...

    session对象及其常用方法

    然后,当客户继续访问服务器上的其他资源时,服务器不再为该客户分配新的 Session 对象,直到客户端浏览器关闭、超时或调用 Session 的 invalidate() 方法使其失效,客户端与服务器的会话结束。 Session 对象主要...

    JavaWeb Session失效时间设置方法

    首先,Session的失效时间可以通过以下三种方式设置,其优先级从高到低依次为: 1. **Java代码设置**:通过`request.getSession().setMaxInactiveInterval(int seconds)`方法,以秒为单位设置Session的失效时间。...

    【ASP.NET编程知识】iframe跨域与session失效问题的解决办法.docx

    ASP.NET 跨域与 Session 失效问题的解决办法 在 ASP.NET 开发中,跨域和 Session 失效问题是一个常见的问题,特别是在使用 iframe 嵌入远程应用时。今天,我们来讨论这个问题的解决办法。 什么是跨域和 Session ...

    session 状态 失效

    在Web开发中,处理Session失效的常见方法有: 1. 增加Session超时时间:通过修改web.config文件,可以增加Session的默认生存时间,防止用户因长时间无操作而导致Session过早失效。 2. 使用Cookie辅助:对于某些不...

    extjs session失效解决方案

    使用filter来做后台,Ext.Ajax.on('requestcomplete', checkUserSessionStatus, this);用requestcomplete这个方法来异步判断session是否已经失效了

    iframe跨域与session失效问题的解决办法

    总结起来,解决iframe跨域和session失效的问题,关键在于处理第三方cookie的访问控制和IE浏览器的P3P协议要求。合理的P3P声明是关键所在,它能允许浏览器在符合用户隐私政策的前提下,正确地处理来自第三方源的...

    ajax 操作全局监测,用户session失效的解决方法

    本文介绍了使用AJAX操作时全局监测用户session失效并解决该问题的方法。AJAX,即异步JavaScript和XML,是一种用于浏览器与服务器之间进行异步通信的技术。它允许网页在无需重新加载的情况下与服务器交换数据,并更新...

    session在httphandler失效

    当在HTTPHandler中遇到Session失效问题,可能是以下原因: 1. **无Cookie支持**:如果客户端禁用了cookie,或者由于某种原因,SessionID无法正确发送回服务器,那么Session就无法正常工作。 2. **异步操作**:...

    详解.net mvc session失效问题

    当Session失效时,我们可以自定义AuthorizeAttribute的子类,如`AuthorizeOfHandleUnAuthorizeAttribute`,并在`HandleUnauthorizedRequest`方法中处理重定向到登录页面的操作。 ```csharp public class ...

    报表session与应用session常识普及

    Session被删除的情况有三种:程序调用HttpSession.invalidate()方法显式销毁session;session的最大有效时间到期,且服务器在一定时间内没有收到客户端的请求;服务器进程被停止。尽管如此,实际上很难做到在浏览器...

    Ajax Session失效跳转登录页面的方法

    综上所述,处理Ajax Session失效跳转登录页面的方法对于提升Web应用的用户体验和安全性能至关重要。通过在后端设置有效的Session失效拦截逻辑,并在前端根据返回的结果执行相应的处理,可以有效地解决Session失效时...

Global site tag (gtag.js) - Google Analytics