无论如何,我们从servlet知道客户端是否还在等待

时间:2014-02-15 17:45:54

标签: java ajax performance jsp servlets

我们有一个jsp页面,它向servlet提交请求。但是servlet必须在大量文件中进行搜索,这需要时间。与此同时,如果客户端关闭,servlet仍会进行搜索,这会浪费我们的资源。无论如何,从servlet我们可以知道客户端是否仍在等待响应?例如:我们应该从servlet知道我们的jsp页面是否已关闭,以便我们可以停止搜索。

1 个答案:

答案 0 :(得分:2)

Http是一种无状态协议。因此从技术上讲,没有连接状态可供检查。但是,这是您模仿连接状态的方式。

您需要在服务器和客户端(Web浏览器)上添加处理。

在服务器上,您可以在会话对象中存储听觉节拍值。心跳表示客户端上次发出请求时的时间戳。您建立一个阈值。我们说10秒。如果客户端(网络浏览器)没有发送心跳消息超过10秒,则放弃您的过程。

在客户端(网络浏览器)上,您可以使用javascript每10秒发送一次心跳消息。使用Ajax将消息发送到服务器。再次告诉服务器客户端仍在等待。

请注意!您需要确保在服务器上建立会话。服务器需要在会话范围内存储热节拍消息。客户端每个会话将有多个请求。

最后,JSP是一个servlet。 JSP只是编写servlet的另一种方式。您的容器(例如Tomcat)将JSP编译为servlet。 JSP在服务器上运行,不在Web浏览器中运行。是的,您可以从servlet(或JSP)将Javascript和HTML发送到Web浏览器。

希望有所帮助。 祝你好运。