Java 中的服务器会话管理

发布于 2024-11-08 11:59:27 字数 273 浏览 0 评论 0原文

如何处理服务器会话中的静态变量?

我有 30 个不同的函数,在服务器上没有真正的关系,但它们目前通过一些静态变量共享数据(我知道这很糟糕,但我只是在测试它)。现在,如果我有不同的客户端连接到服务器,它们会互相干扰,没有客户端可以获得正确的数据。

所以我想知道有什么好方法可以处理这些不同的会话数据,而无需在创建类时将对其他对象的二十个引用传递给类。

另一个问题是,这些类实例化线程,因此我不能确定当我将响应发送回服务器时操作是否已完成。 (因此根据客户端切换当前静态变量不是一个选项)

How can I handle static varibles inside my server session?

I have 30 different functions with no real realtion on the server, but they currently share data over some static varibles (I know this is bad, but I was just testing it). Now if I have different clients connecting to the server, they would interfear with each other an no client would get the right data.

So I wondered what a good way to handle this diferent Session datas without passing twenty refernce to the other objects to a class when creating a class.

Another problem is, that the classes instanciate threads, so I can't be shure, that the actions are completed when I send the responses back to the server. (So switchin the current static varibles depending on the client is not an option)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

追星践月 2024-11-15 11:59:27

如果您不想将所有这些内容放入会话中(session.setAttribute(..).getAttribute()),那么也许您可以使用以下映射:地图:

public static Map<String, Map<String, Object>> sessionValues = ...

并从该地图设置/获取。其中:

  • 第一个映射的键是会话 id(可以通过 session.getId() 获取)
  • 第二个映射的键是属性名称
  • 第二个映射的值是属性值

因此您将能够拥有会话特有的值,而无需依赖 servlet API。

If you don't want to put all these things in the session (session.setAttribute(..) and .getAttribute()) then perhaps you can use a map of maps:

public static Map<String, Map<String, Object>> sessionValues = ...

and set/get from that map. Where:

  • the key of the 1st map is the session id (can be obtained via session.getId()
  • the key of the 2nd map is the property name
  • the value of the 2nd map is the property value

Thus you will be able to have values unique to sessions without relying on the servlet API.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文