0

我编写了一个异步 servlet,将缓存对象中的更改提供给所有向 servlet 发送请求的客户端。

对于请求,客户端可以通过包含不同的参数来获取缓存的一部分。

我只是将请求存储在 ArrayList 中,并在发生更改时迭代它们以将响应发送回客户端。

一切都运行良好,除了现在我需要处理客户端将发送带有可能不同参数的第二个请求的情况。

发生这种情况时,我想用这个新请求替换我存储的旧请求。但要做到这一点,我需要知道请求是否来自同一个用户。有没有办法用 Servlets 3.0 测试请求是否来自同一个用户?

4

1 回答 1

1

必须满足旧的请求。您可以使用 Connection:closed 标头发送错误响应。

要关联来自同一客户端的请求,唯一的方法是通过 cookie。您可以比较两个请求中的会话 ID(这是一个 cookie)。如果任何传入请求没有会话,您应该建立一个会话(通过 request.getSession()),然后进行重定向,以便客户端使用 jsessionid cookie 重试请求。

if request.getSession(false)==null
    request.getSession(true);
    response.sendRedirect( request.uri +"?"+ request.query )

在您的情况下,重定向是必要的,因为通常需要一段时间才能返回响应,但我们希望尽快设置 cookie。

于 2013-03-23T01:11:22.470 回答