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

标签 java ajax performance jsp servlets

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

最佳答案

Http 是一种无状态协议(protocol)。因此从技术上讲,没有连接状态需要检查。但是,这是模拟连接状态的方法。

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

在服务器上,您可以在 session 对象中存储心跳值。心跳意味着客户端上次发出请求的时间戳。您设定一个阈值。假设 10 秒。如果客户端(网络浏览器)超过 10 秒没有发送心跳消息,您将放弃进程。

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

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

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

希望有帮助。 祝你好运。

关于java - 无论如何,我们从 servlet 知道客户端是否仍在等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21801246/

相关文章:

java - 如何从java中的请求中获取客户端的浏览器ip?

java - JSF 2.0 如何将 Apache Myfaces 与 Glassfish V3 一起使用

javascript - 无法对 api 进行 POST,使用 fetch 时出现错误 400

javascript - jquery 输入尾部斜杠之谜(消失了!)

java - 如何发送自定义 java 类对象作为对 java servlet 中 ajax 调用的响应并在 javascript 中检索它?

C++ vector 与数组(时间)

c - 如何测量在 Pentium 4 处理器上运行时 C 算法消耗的功率?

Java:从 HTTP POST 获取参数和正文

java - Crap4j libClassPath 作为路径引用

.net - HashSet<T>.Contains 如何比 List<T>.Contains 快?