如何在服务器会话中处理静态变量?
我有30个不同的功能,在服务器上没有真正的实现,但它们目前通过一些静态变量共享数据(我知道这很糟糕,但我只是测试它)。现在,如果我有不同的客户端连接到服务器,他们会相互干扰,没有客户端会获得正确的数据。
所以我想知道在创建一个类时,如果没有将二十个引用其他对象传递给一个类,那么处理这个不同的Session数据有什么好方法。
另一个问题是,这些类会实现线程,因此我无法避免在将响应发送回服务器时完成操作。 (因此,根据客户端不能选择切换当前的静态变量)
答案 0 :(得分:2)
如果您不想将所有这些内容放在会话中(session.setAttribute(..)
和.getAttribute()
),那么您可以使用地图地图:
public static Map<String, Map<String, Object>> sessionValues = ...
并从该地图设置/获取。其中:
session.getId()
因此,您可以在不依赖servlet API的情况下使会话具有唯一值。