如果java中的用户不活动,如何使浏览器会话到期?

时间:2011-12-26 10:41:12

标签: java session web-applications

我希望在我的网络应用程序中用户不活动1分钟时使我的浏览器会话到期?我尝试做两件事: -

方法1: - 将以下代码放入web.xml

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

方法2: -

session.setMaxInactiveInterval(1*60);

这两个aproach都不会使会话过期。即使用户没有进行3分钟的活动,我仍然可以继续吗?

当它不工作时: - 当我直接登录屏幕并登录时,它不起作用。

当它工作时: - 虽然我将上述Web应用程序与我的一个不同的Web应用程序集成webapp2时使用相同的方法。在这种情况下会发生什么我在webapp2上提供了一个链接,直接将我带到webapp1而不询问登录凭据。如果用户没有进行1分钟的活动,这里注销可以使用吗?

我不知道为什么在第一种情况下,当我手动登录时虽然web.xml是相同的,并且在两种情况下都执行了session.setMaxInactiveInterval(1 * 60)的类?

1 个答案:

答案 0 :(得分:0)

仅当服务器从客户端发现不活动时,会话才会超时 在web.xml / session / session-time-out中定义的一段时间。您应该通过从客户端发送请求并在获得响应后测试它是否正常工作,只需关闭浏览器窗口即可。会话超时间隔后再发送一个请求。检查它是否是新会话(检查sessionID)。进一步的帮助?enter code here在下面阅读 -

对于基于java的Web应用程序,有一种称为Web应用程序侦听器的东西。 这些侦听器侦听客户端的请求,会话和相关内容。对于会话超时处理,您可以使用会话侦听器。步骤1 - 修改web.xml以包含Web应用程序侦听器:

<listener>
    <listener-class>some.package.name.MySessionListener</listener-class>
</listener>

现在,在源目录中创建上面提到的类:

package some.package.name;

public class SessionListener implements javax.servlet.http.HttpSessionListener {

    public void sessionCreated(HttpSessionEvent arg0) {
        //write your own code for when new session is created.
    }

    public void sessionDestroyed(HttpSessionEvent arg0) {
        //Write your own c`enter code here`ode for when session is destroyed.
    }
}

希望你觉得它很有用。 :)。