gpt4 book ai didi

java - Java 中一个 servlet 的多个 session

转载 作者:行者123 更新时间:2023-11-30 12:00:47 25 4
gpt4 key购买 nike

我有一个 servlet 负责多个站点,因此我想为不同的站点设置不同的 session ,即使是同一个用户也是如此。

Java 对此有任何支持吗?还是我需要在属性名称前加上前缀?我想前缀不是一个好主意。

/约翰内斯

最佳答案

这不能在仅基于 URL 参数的 servlet 容器中完成;你必须自己做。然而,管理“单独” session 的最简单方法不是在您的 servlet 中处理属性前缀:

  1. 为 HttpSession 编写一个简单的包装器类。让它保存一个属性映射并通过该映射返回所有属性/值方法;将所有其他方法委托(delegate)给您正在包装的实际 session 。覆盖 invalidate() 方法以删除 session 包装器,而不是终止整个“真实” session 。
  2. 编写一个servlet过滤器;将其映射以拦截所有适用的 URL。
  3. 维护一个 session 包装器集合作为真实 session 中的一个属性。
  4. 在过滤器的 doFilter() 方法中,从集合中提取适当的 session 包装器,并将其注入(inject)到您正在传递的请求中,方法是将原始请求包装到 HttpServletRequestWrapper 的 getSession() 方法中被覆盖。
  5. 您的 servlets/JSPs/等等...将享受“单独的” session 。

请注意,Sessions 的“lastAccessedTime”与此方法共享。如果您需要将它们分开,则必须编写自己的代码来维护此设置并使 session 包装器过期。

关于java - Java 中一个 servlet 的多个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com