gpt4 book ai didi

java - 构建 Java 服务器,但我无法让页面停止加载(使用 PrintWriter 和 Buffered Reader)

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:33 25 4
gpt4 key购买 nike

我正在构建一个 Java 服务器,到目前为止一切都按预期工作。我可以使用我编写的两种方法提供静态 html 页面:正文和 header 。现在,我正在尝试编写一个名为“bodywithQueryString”的新方法。

问题:几乎可以工作,但是页面加载后,加载不会停止。它只是不断地加载。我的静态页面不会发生这种情况。

旧方法和新 bodyWithQueryString() 方法之间的唯一区别是,在新方法中我使用缓冲读取器和打印写入器。这些对我来说是新功能,所以我猜我做得不对。

这是我的新方法的运作方式:我想将我的路线和查询字符串(queryarray)传递给 bodyWithQueryString 方法。我希望该方法将文件(从路由)读取到字节输出流,在读取时对查询字符串的键/值对进行替换,最后返回字节。然后 getResponse() main 方法会将 html 发送到浏览器。

这是我的代码:

public void getResponse() throws Exception {
String[] routeParts = parseRoute(route); //break apart route and querystring
File theFile = new File(routeParts[0]);
if (theFile.canRead()) {
out.write(header( twoHundredStatusCode, routeParts[0], contentType(routeParts[0]) ) );

if (routeParts.length > 1) { //there must be a querystring
String[] queryStringArray = parseQueryString(routeParts[1]); //break apart querystring
out.write(bodyWithQueryString(routeParts[0], queryStringArray)); //use new body method
}
else out.write(body(routeParts[0])); //use original body method

out.flush();

private byte[] bodyWithQueryString(String route, String[] queryArray)
throws Exception {

BufferedReader reader = new BufferedReader(new FileReader(route));
ByteArrayOutputStream fileOut = new ByteArrayOutputStream();
PrintWriter writer = new PrintWriter(fileOut);
String line;

while ((line = reader.readLine()) != null) writer.println(line.replaceAll(queryArray[0] ,queryArray[1]));

writer.flush();
writer.close();
reader.close();
return fileOut.toByteArray();
}

最佳答案

在我看来,您没有返回 Content-Length header 。这使得浏览器很难知道何时停止加载响应。

关于java - 构建 Java 服务器,但我无法让页面停止加载(使用 PrintWriter 和 Buffered Reader),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17136445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com