我要求将会话超时设置为40秒。我知道我们通常保持20分钟。但我目前的应用程序要求是将会话超时保持为40秒的秒数。 web.xml仅将整数值设为1,但不是0.6。有没有办法写这个?我们在Apache tomcat服务器上运行我们的Java Web应用程序。
我能在web.xml中设置的最小值是1分钟,如:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
我可以使用session.setMaxInactiveInterval(40)将会话超时设置为40秒;但是session.setMaxInactiveInterval(40);仅在用户打开网站时才有效。但是一旦用户关闭网站session.setMaxInactiveInterval方法将无法工作,默认的web.xml将获得控制权并再次将会话时间设置为1分钟。
有没有办法通过做一些调整在web.xml中以秒为单位设置会话超时?
答案 0 :(得分:1)
据我所知,web.xml
仅允许分钟。如果您想使用秒,则必须通过在HttpSessionListener
中注册自定义web.xml
(或类似)来以编程方式执行此操作:
<listener>
<listener-class>com.sample.SessionTimeoutSetter</listener-class>
</listener>
public class SessionTimeoutSetter implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
event.getSession().setMaxInactiveInterval(40);
}
public void sessionDestroyed(HttpSessionEvent event) {
// not needed
}
}
取自servlet-api-2.4
&#39; s HttpSession
/**
* Specifies the time, in seconds, between client requests before the
* servlet container will invalidate this session. A negative time
* indicates the session should never timeout.
*
* @param interval An integer specifying the number of seconds
*/
public void setMaxInactiveInterval(int interval);