Jakarta ee 在两个servlet之间传递数据

Jakarta ee 在两个servlet之间传递数据,jakarta-ee,tomcat,servlets,Jakarta Ee,Tomcat,Servlets,我有两个servlet在同一个Tomcat服务器上运行,我需要将数据从一个servlet的实例传递到另一个servlet的相应实例。似乎我可以通过这样做来做到这一点: getServletContext().getContext("/path").setAttribute("varName", variable) 同样,我应该能够通过使用getAttribute从另一个servlet接收它。但是,我的问题是: 另一个servlet如何知道何时设置了该属性?数据可以在任何时间点输入,也可以多次输

我有两个servlet在同一个Tomcat服务器上运行,我需要将数据从一个servlet的实例传递到另一个servlet的相应实例。似乎我可以通过这样做来做到这一点:

getServletContext().getContext("/path").setAttribute("varName", variable)
同样,我应该能够通过使用getAttribute从另一个servlet接收它。但是,我的问题是:

另一个servlet如何知道何时设置了该属性?数据可以在任何时间点输入,也可以多次输入。那么,如何“通知”另一个servlet现在有数据等待它获取呢

谢谢

埃里克

编辑:


下面是一些我正在尝试做的事情:我正在尝试用两个不同的应用程序构建一个聊天程序。还有一个客户端,它可以向另一个应用程序(聊天接收器应用程序)发送消息。我用瓦丁做前端。chat receiver应用程序包含两个servlet:另一个Vaadin应用程序和一个从客户端应用程序接收消息的基本servlet(这部分已经在工作)。现在我想把它转发给聊天接收器应用程序的Vaadin应用程序,它与接收消息的servlet位于同一个war文件中。希望这能把事情弄清楚。让我知道,如果你认为瓦丁论坛将是一个更好的地方张贴这个问题。谢谢你的帮助,我主要是一个核心java程序员,所以我很困惑。我真的很感激

调用servlet的唯一机制是发出HTTP请求。此外,只允许servlet容器调用servlet,处理它们的生命周期

这意味着您可以在一个servlet中设置一些servlet上下文属性,然后等待用户调用第二个servlet,这将看到全局值。不能从一个servlet调用另一个servlet

不确定你想要实现什么。也许从第一个servlet转发/重定向到第二个servlet就足够了

request.setAttribute("varName", variable);
getServletContext().getRequestDispatcher("servlet2").forward(request,response);
变量可通过以下方式在
servlet2
中访问:

request.getAttribute("varName");
顺便说一句,您的代码过于复杂且容易出错,请尝试以下方法:

getServletContext().setAttribute("varName", variable);

我不清楚你到底想做什么。(或者,如果servlet在同一个应用程序中;在同一个服务器上是不够的信息。)如果是“对话”特定的,则可以将其置于会话中。如果它是应用程序范围内的,那么它可以放在应用程序上下文中。如果它需要在不同于基于请求(例如表单数据)的请求之间持久化。是的,抱歉。它们在同一个war文件中运行