有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在异步servlet中用新请求替换旧请求

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

通过请求,客户机可以通过包含不同的参数来获得缓存的一部分

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

一切都很好,除了现在我需要处理这样一种情况:客户机将发送可能具有不同参数的第二个请求

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


共 (1) 个答案

  1. # 1 楼答案

    旧的要求必须得到满足。您可以发送一个错误响应,连接:closed header

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

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

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