查询会话超时值

时间:2012-08-09 10:50:11

标签: jsp

我正在使用JSP& amp ;;开发一个Web项目。 JAVA。我必须将会话时间设置为无穷大。 会话只有在用户的浏览器关闭时才会过期。 我怎么能这样做?

我需要你的建议,将会话时间设置为无限是否是一个好习惯。请提供您的意见。

谢谢。

3 个答案:

答案 0 :(得分:0)

您可以通过在web.xml中添加这些行来指定web.xml文件中的会话超时

<session-config>
<session-timeout>30</session-timeout>
</session-config>

该值以分钟为单位,并且处于非活动期,这意味着只要浏览器与服务器交互,就会刷新该值。

具有无限值(不知道是否可能),强烈建议不要这样做。您无法确定浏览器何时关闭,最后您可能会耗尽内存或存储大量无用的会话。

相反,您可能会尝试在您的html或某些ajax请求中进行一些元刷新,以保持会话处于活动状态,但我不建议使用它。只需在超时时加一个高值。

希望它有所帮助。

答案 1 :(得分:0)

Servlet规范中没有指定默认的会话超时,它被留给容器。

对于tomcat,它是30分钟。但是,总是可以通过DD?

覆盖此值
<session-config> 
<session-timeout>600</session-timeout> 
</session-config>

通过HttpSession对象上的setMaxInactiveInterval()方法以编程方式。

如果会话超时设置为-1,则会话生存期延长至无穷大,即只要容器正在运行。

最后,如果应用程序的会话超时是无限的,那么您的会话将永不过期,因此不是一个好主意。

答案 2 :(得分:0)

您可以在jsp中尝试下面的代码片段来点击js函数,该函数将调用ajax函数来命中服务器端组件。然后只需使用会话API使会话无效。

window.onbeforeunload = WindowClose; 

function WindowClose() { 

  //Write a AJAx request here to hit the server side servlet of any filter 

}

或使用

<body onunload="WindowClose(); >

在服务器端代码中,使用

HttpSession session = request.getsession();
session.setMaxInactiveInterval(0); //or session.invalidate();

同样如建议的那样,在web.xml中定义默认会话超时值是很好的方法,以便浏览器崩溃,会话将在规定的时间过后失效。