今天用Java实现了一个简易版的web服务器,但是出了点问题,目前为止,还不知道如何解决。
我把代码和问题放在这里,有大佬看到的话,帮忙解决一下。
public class TcpServer {
public static void main(String[] args) throws IOException {
ServerSocket server=new ServerSocket(4000);
while(true) {
Socket socket=server.accept();
new Thread(()->{
try {
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str=br.readLine();
String[] strArr=str.split(" ");
String path=strArr[1].substring(1);
//构造方法中绑定要读取的html路径
FileInputStream fis=new FileInputStream(path);
int len=0;
byte[] b=new byte[1024];
OutputStream os=socket.getOutputStream();
//写入http协议响应头,固定写法
os.write("HTTP/1.1 200 OK\r\n".getBytes());
os.write("Content-Type:text/html\r\n".getBytes());
//必须写入空行,否则浏览器不解析
os.write("\r\n".getBytes());
while((len=fis.read(b))!=-1) {
os.write(b, 0, len);
}
fis.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
}
最终实现效果
期待的结果
下面分别附上index.html,index.css,index.js的代码
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我是你爸爸</title>
<link rel="stylesheet" href="index.css">
</head>
<body>
<div id="box">我是你爸爸哦<a href="mother.html">点击去找你妈妈</a></div>
<img src="kitchen.jpg" alt="">
</body>
<script src="index.js"></script>
</html>
index.css
#box {
font-size:50px;
}
index.js
let $id=document.getElementById("box");
$id.style.color="gold";
通过运行结果,可以看出,js的引用成功加载出来了,但是css的引用效果没有加载上去。
不知道为啥,求助!
个人猜测是多线程的执行结果?是不是应该先加载css再执行HTML?