我希望在我的网络应用程序中用户不活动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)的类?
答案 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.
}
}
希望你觉得它很有用。 :)。