gpt4 book ai didi

java - 当 HTML 文件从网络服务器发送到客户端浏览器时不显示图像

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:53 26 4
gpt4 key购买 nike

我创建了一个 Java 网络服务器,当在浏览器上搜索服务器的 IP 地址时,它应该发送客户端网页文件。问题是我只能发送一个 HTML 文件,但我需要发送 CSS 以及嵌入在 HTML 文件中的图像。虽然我已经将 HTML 文件链接到外部 CSS 代码和图像,但没有显示 CSS 和图像。我至少能够让 CSS 正常工作,因为我将所有 CSS 代码直接插入到 HTML 代码中。我正在寻找一种方法,使图像能够显示在客户端的浏览器中,如果可能的话,还有一种方法可以发送外部 CSS 代码,这样我以后就不需要将 CSS 代码直接写入 HTML 文件中了。如果您能展示解决问题的代码,那就太好了。

这是我的主服务器类:

package myserver.pkg1.pkg0;

import java.net.*;

public class Server implements Runnable {

protected boolean isStopped = false;
protected static ServerSocket server = null;

public static void main(String[] args) {

try {

server = new ServerSocket(9000);
System.out.println("Server is ON and listening for incoming requests...");
Thread t1 = new Thread(new Server());
t1.start();

} catch(Exception e) {
System.out.println("Could not open port 9000.\n" + e);
}

}

@Override
public void run() {

while(!isStopped) {

try {
Socket client = server.accept();
System.out.println(client.getRemoteSocketAddress() + " has connected.");
Thread t2 = new Thread(new Server());
t2.start();
new Thread(new Worker(client)).start();
} catch(Exception e) {
System.out.println(e);
}

}

}

}

如您所见,在服务器接受请求后,客户端套接字变量被转发给一个新的类 Worker。 Worker 类处理每个客户端的每个输出。

这是 Worker 类:

package myserver.pkg1.pkg0;

import java.io.*;
import java.net.*;

public class Worker implements Runnable {

protected Socket client;

public Worker(Socket client) {
this.client = client;
}

@Override
public void run() {

try {
PrintWriter out = new PrintWriter(client.getOutputStream());
out.println("HTTP/1.1 200 OK");
out.println("Content-type: text/html");
out.println("\r\n");
out.flush();
out.close();
client.close();

} catch(Exception e) {
System.out.println(e);
}

}

}

最佳答案

既然你是在重新发明轮子,我假设这个问题是出于学术目的。如果没有,您可以随时在 CDN 上托管您的 css、图像和其他静态内容。并在您的 HTML 中引用它们。

现在,您在这里所做的是响应 TCP 请求,而不是 HTTP 请求。您的第一步应该是编写一个请求处理程序,它从 TCP 套接字捕获输入流。然后将流解析为有效的 HTTP 请求。然后从 http 请求中捕获 URL 路径,并根据该路径提供内容。这样您就可以在服务器上引用图像/css 的相对路径。这些路径的处理程序应该能够映射到文件系统并选择相关文件并将其组合成 http 响应。

关于java - 当 HTML 文件从网络服务器发送到客户端浏览器时不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45408623/

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