java - 如果浏览器已停止,我怎样才能停止这个 JSP?

标签 java jsp browser

我创建了一个 JSP,它将创建潜在无限量的输出。

当我告诉浏览器停止时,浏览器停止了,但我的控制台告诉我 JSP 的 servlet 一直在运行。

我想知道是否以及如何修改此代码,以便在浏览器停止接收数据时它会停止:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"  errorPage="ExcessOutputErrorPage.jsp" %>
<%@ page import="de.svenjacobs.loremipsum.LoremIpsum" %>
<%@ page buffer="8kb" autoFlush="true" %>

<%! 
    private int dumpCount = 0;

    private String nextDump()
    {
        dumpCount++;

        String dumpHeader = "Dumping " + dumpCount + " paragraphs"; 
        String dump = "<h2>" + dumpHeader + "</h2>";
        LoremIpsum loremIpsum = new LoremIpsum();

        System.out.println(dumpHeader);

        for (int i=0; i<dumpCount; i++)
        {
            dump += "<p>" + loremIpsum.getParagraphs(1) + "</p>";
        }

        return dump;
    }
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Large Amount of Text</title>
</head>
<body>
    <h1>Large Amount of Text</h1>
    <% 
        boolean doDump = true;
        while (doDump) 
        { 
            out.println(nextDump());
            out.flush();
        } 
    %>
</body>
</html>

最佳答案

如果您想从浏览器控制进程,您可能需要查看 AJAX。公开 loremIpsum 对象并使 AJAX 代码回调到您的服务器,以便继续更新您的屏幕。

现在,由于应用程序服务器上全天运行无限循环,可能会出现多个请求并严重降低服务器速度。

根据我所看到的您发布的代码,loremIpsum 对象似乎并不特定于用户,因此您应该安全地使用 AJAX,以便将循环和大部分工作移出服务器资源并转换为 JavaScript/AJAX。

关于java - 如果浏览器已停止,我怎样才能停止这个 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3940183/

相关文章:

java - 方法引用导致原始类型编译器警告,但 lambda 不会

java - 绑定(bind)着色器 - LWJGL 对象的不正确纹理

java - 以不同的速率从 InputStream 中多次读取

javascript - 将值和控制从 javascript 传递到 servlet

javascript - 当我在 Flex 4 中滚动 spark Datagrid 时如何阻止浏览器窗口滚动?

javascript - 如何判断网页资源何时被缓存?

java - 将字符串日期更改为另一个字符串日期

javascript - 使用 jQuery 添加/删除 css 类以通过 css 类识别元素

java - 在带有 URI 的 HTTP 请求中找不到映射 [springcodes/functions.jsp]

php - 在从 php session 注销期间取消设置 cookie 有什么意义?