当前位置: 首页 > 面试题库 >

如何在Java Web应用程序中动态设置会话超时?

端木志诚
2023-03-14
问题内容

我需要给我的用户一个Web界面来更改会话超时间隔。因此,Web应用程序的不同安装对其会话将具有不同的超时,但是它们web.xml不能不同。

有没有办法以编程方式设置会话超时,以便我可以使用ServletContextListener.contextInitialized()读取配置的时间间隔并在应用程序启动时进行设置?


问题答案:

代替使用ServletContextListener,而使用HttpSessionListener

在该sessionCreated()方法中,您可以通过编程方式设置
会话超时

public class MyHttpSessionListener implements HttpSessionListener {

  public void sessionCreated(HttpSessionEvent event){
      event.getSession().setMaxInactiveInterval(15 * 60); // in seconds
  }

  public void sessionDestroyed(HttpSessionEvent event) {}

}

并且不要忘记在 部署描述符中 定义 侦听器 : __

<webapp>
...      
  <listener>                                  
    <listener-class>com.example.MyHttpSessionListener</listener-class>
  </listener>
</webapp>

(或者从Servlet
3.0版开始,您可以改用@WebListener注解)。

尽管如此,我还是建议为每个应用程序创建不同的 web.xml 文件,并在那里定义会话超时:

<webapp>
...
  <session-config>
    <session-timeout>15</session-timeout> <!-- in minutes -->
  </session-config>
</webapp>


 类似资料:
  • 问题内容: 我正在寻找类似于Python的PHP的函数。我想访问像PHP这样的字典,运行该命令后即可使用。 问题答案: 让我来解决一些可能与您的问题有关的事情…可能与您无关,但是我认为其他人可能会遇到完全相同的问题,并且可能会从我的(有限的)经验中受益…因为我也一次有这个问题。 作为从PHP到Python(从不回头)的人,我认为了解会话如何在幕后工作很有用。除非您(a)想要通过实践来了解有关会话管

  • 问题内容: 通过多个实例扩展Web应用程序是Azure云的最大优势之一。为了实现对我们的Web角色云应用程序的多个VM支持,我们正在实现Azure Redis缓存。我们正在使用RedisSessionStateProvider提供程序来维护会话状态。以下是web.config文件中会话管理的配置设置。 我们的问题是会话超时不会随着用户的回发而延长,假设我们的用户在10:00 AM登录到应用程序,那

  • 问题内容: 我正在研究XSS(跨站点脚本)问题。我的应用程序在Oracle Weblogic门户上运行。我们使用Servlet 2.5版。 我在过滤器中添加了以下3行代码,用于设置httponly和安全cookie,它工作正常。 问题是当我注销并立即在同一浏览器中登录时。我可以登录,但是在此之后,在jsp页面上我遇到了会话超时问题。我们使用与weblogic相关的API。该API将返回空..估计是

  • 我正在开发一个使用Hibernate的简单JSF应用程序。我将所有必需的库导入WEB-INF/lib文件夹,并将它们指向类路径。但是当我尝试编译它时,我遇到了错误: 这是我创建SessionFactory并使用它的代码: 我在这里使用它: 那我做错了什么?我该怎么解决这个问题?

  • 我需要向API服务发送一个post请求,该服务需要一个会话id以及post请求字段中的其他参数,以便获得所需的信息。 我正在使用邮递员来测试这个API。 我想知道在使用Postman时,如何在帖子请求中发送“会话ID”? 我知道Postman中的预请求脚本,但我不知道如何在post请求中使用该变量。

  • 我有一个Spring Boot(1.5.8)webapp,与其他几个Spring Boot服务,都部署到AWS。webapp模块部署到由弹性负载均衡器管理的两个EC2实例。整个系统是由库伯内特斯精心策划的。 我正试图设置会话cookie max age来解决一个问题,正如这里所建议的:成功身份验证后的Spring SAML无尽重定向循环 当我使用Docker Compose在本地机器上运行时,我所