Java 无需客户端请求即可将servlet与jsp通信
我正在做一个项目,我们使用Tomcat8作为应用服务器,因此使用JSP和servlet。每个JSP都显示一种项目列表。应用程序的用户有可能模拟一个项目。这意味着什么并不重要。当用户单击“模拟”按钮时,将执行以下过程: 通过ajaxjavascript将执行一个servlet,该servlet生成一个zip文件并将该文件存储在服务器的硬盘上 将在数据库中为各个项目设置“模拟”标志 后端的外部java程序侦听“simulation”标志,如果设置了项目标志,则外部程序将获取web应用程序存储的zip文件 然后外部java程序为该项目运行模拟。 模拟完成后,外部java程序在服务器的硬盘上存储一个新的zip文件,在数据库中设置一个“嘿,我准备好了”标志,并调用web应用程序的servlet 这个servlet将新zip文件中的数据信息保存到数据库中 完成 所以我的问题是:通知JSP模拟已经完成的最佳方式是什么? JSP仍然显示项目正在进行模拟。我目前的想法如下: 我可以定期向服务器发送Ajax请求,以检查数据库中的“hey I'm ready”标志,如果设置了该标志,我可以在JSP上显示结果。但我觉得有更聪明的解决办法 也许我可以使用最后一个servlet调用(参见第5点)以某种方式通知JSP模拟已经完成?问题是这个servlet不是由客户端调用的,而是由外部java程序调用的 你有什么建议吗?或者有什么我应该读的技术吗Java 无需客户端请求即可将servlet与jsp通信,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我正在做一个项目,我们使用Tomcat8作为应用服务器,因此使用JSP和servlet。每个JSP都显示一种项目列表。应用程序的用户有可能模拟一个项目。这意味着什么并不重要。当用户单击“模拟”按钮时,将执行以下过程: 通过ajaxjavascript将执行一个servlet,该servlet生成一个zip文件并将该文件存储在服务器的硬盘上 将在数据库中为各个项目设置“模拟”标志 后端的外部java程序侦听“simulation”标志,如果设置了项目标志,则外部程序将获取web应用程序存储的zip
谢谢。使用异步ajax调用意味着当servlet完成其工作时,函数将返回,并返回一些HTTP代码200以获得成功 所以这个例子:
$.ajax({
url: Config.serverUrl+'/simulationServlet',
type: 'GET',
success: function(result) {
$('#infoBox').text("simulation is over");
}
});
将显示模拟已完成。感谢您的回复。但问题是我有两个servlet调用。第一步是第2步。第二步和第五步。第一个servlet由使用web应用程序的客户机调用。第一个servlet只是在数据库中设置一个标志,并将成功返回给客户机。但是第二个servlet由驻留在服务器上的外部java程序调用。我必须知道第二个servlet何时完成。这应该是一个链式调用,因为应用程序逻辑不正常。这样想吧。因为您希望完成一项工作,所以需要点击一个servlet,让它做任何它想做的事情,并在工作完成时返回。例如,让我们称之为门面。servlet可以调用其他servlet等。您可以使用另一种编程模式publish/subscribe,但您需要设置很多东西来将通知推送到客户端应用程序。