我创建了一个功能正常的Web服务器,此时,我必须将文件中的html代码完全粘贴到服务器程序中,以便客户端浏览器读取html代码。我想要一个更简单的方法,我可以创建一个导致服务器目录中的html文件的变量,这样服务器就可以发送在该文件中写入的任何代码。
这是我的主要Server类:
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");
//In this line I used out.println("full html code"); but I'd like a simpler way where it can search for the html file in the directory and send it.
out.flush();
out.close();
client.close();
} catch(Exception e) {
System.out.println(e);
}
}
}
正如您在服务器接受请求后所看到的,客户端套接字变量被转发到新的类Worker。
这是工人类:
[server]
const http = require('http');
const fs = require('fs');
const $ = require('jquery');
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const main = require('./main');
const dom = new JSDOM(`<!DOCTYPE html><html><body><p>Hello world</p></body>`);
http.createServer(function(request, response){
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(dom.serialize());
response.end();
}).listen(8080);
Worker类处理将在客户端浏览器上看到的所有输出,我希望它是html文件的结果。
答案 0 :(得分:2)
您可以放置文件&#34; index.html&#34;在你的类路径中并执行
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("index.html");
String s = new BufferedReader(new InputStreamReader(in))
.lines().collect(Collectors.joining("\n"));
out.println(s);