Java 在异步servlet中用新请求替换旧请求
我编写了一个异步servlet,将缓存对象中的更改提供给所有向servlet发送请求的客户端 通过请求,客户机可以通过包含不同的参数来获得缓存的一部分 我只是将请求存储在ArrayList中,并在发生更改时对其进行迭代,以将响应发送回客户端 一切都很好,除了现在我需要处理这样一种情况:客户机将发送可能具有不同参数的第二个请求Java 在异步servlet中用新请求替换旧请求,java,servlets,asynchronous,httprequest,servlet-3.0,Java,Servlets,Asynchronous,Httprequest,Servlet 3.0,我编写了一个异步servlet,将缓存对象中的更改提供给所有向servlet发送请求的客户端 通过请求,客户机可以通过包含不同的参数来获得缓存的一部分 我只是将请求存储在ArrayList中,并在发生更改时对其进行迭代,以将响应发送回客户端 一切都很好,除了现在我需要处理这样一种情况:客户机将发送可能具有不同参数的第二个请求 发生这种情况时,我想用这个新请求替换我存储的旧请求。但要做到这一点,我需要知道请求是否来自同一个用户。是否有办法测试请求是否来自使用Servlets 3.0的同一用户?必须
发生这种情况时,我想用这个新请求替换我存储的旧请求。但要做到这一点,我需要知道请求是否来自同一个用户。是否有办法测试请求是否来自使用Servlets 3.0的同一用户?必须提供旧请求。您可以发送一个错误响应,连接:closed header 要关联来自同一客户机的请求,唯一的方法是通过cookie。您可以比较两个请求中的会话id(cookie)。如果任何传入请求都没有会话,则应建立会话(按request.getSession()),然后执行重定向,以便客户端使用JSSessionID cookie重试该请求
if request.getSession(false)==null
request.getSession(true);
response.sendRedirect( request.uri +"?"+ request.query )
在您的情况下,重定向是必要的,因为通常需要一段时间才能返回响应,但我们希望尽快设置cookie。您必须能够在多个会话中识别同一用户吗?不,不是多个会话