我创建了一个 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/