我正在尝试为我的应用程序配置会话超时。
在web.xml中,我配置了分钟,如下所示:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
为确保我创建的侦听器一切正常,请参阅:
<listener>
<listener-class>br.com.sender.util.SessionListener</listener-class>
</listener>
请参阅我的侦听器类:
package br.com.sender.util;
import java.util.Date;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
System.out.printf("Session ID %s created at %s%n", event.getSession().getId(), new Date());
}
public void sessionDestroyed(HttpSessionEvent event) {
System.out.printf("Session ID %s destroyed at %s%n", event.getSession().getId(), new Date());
}
}
当我登录我的应用程序时,将创建会话(与此同时,我将一个userMB与sessionScope存储在一起),请参阅:
Session ID 801040FAFEBC8D21C3C8E0DA56BF9B27 created at Tue Jun 10 18:44:33 BRT 2014
几分钟后,如果不执行任何操作,会话将被破坏:
Session ID 801040FAFEBC8D21C3C8E0DA56BF9B27 destroyed at Tue Jun 10 18:46:26 BRT 2014
当用户单击某些菜单或按钮时,将再次创建会话,但是我希望销毁UserMB(SessionScope),并且用户必须再次登录,但是这种情况不会发生,用户可以继续使用应用程序而无需重新登录。
最佳答案
您需要一个WebFilter
来检查会话范围内的某些属性并确定用户是否已登录