我正在使用JSP& amp ;;开发一个Web项目。 JAVA。我必须将会话时间设置为无穷大。 会话只有在用户的浏览器关闭时才会过期。 我怎么能这样做?
我需要你的建议,将会话时间设置为无限是否是一个好习惯。请提供您的意见。
谢谢。
答案 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中定义默认会话超时值是很好的方法,以便浏览器崩溃,会话将在规定的时间过后失效。