1
我想寫一個簡單的http服務器,使用com.sun.net.httpserver類。我在啓動時向瀏覽器發送html文件(index.html),但我不知道如何包含外部css文件。它工作時,CSS代碼放在HTML文件。我知道,該瀏覽器應發送請求,要求服務器的css文件,但我不知道如何接收此請求並將此文件發送回瀏覽器。如果可能會有所幫助,我會在下面附上我的代碼片段。如何使用com.sun.net.httpserver包含css文件?
private void startServer()
{
try
{
server = HttpServer.create(new InetSocketAddress(8000), 0);
}
catch (IOException e)
{
System.err.println("Exception in class : " + e.getMessage());
}
server.createContext("/", new indexHandler());
server.setExecutor(null);
server.start();
}
private static class indexHandler implements HttpHandler
{
public void handle(HttpExchange httpExchange) throws IOException
{
Headers header = httpExchange.getResponseHeaders();
header.add("Content-Type", "text/html");
sendIndexFile(httpExchange);
}
}
static private void sendIndexFile(HttpExchange httpExchange) throws IOException
{
File indexFile = new File(getIndexFilePath());
byte [] indexFileByteArray = new byte[(int)indexFile.length()];
BufferedInputStream requestStream = new BufferedInputStream(new FileInputStream(indexFile));
requestStream.read(indexFileByteArray, 0, indexFileByteArray.length);
httpExchange.sendResponseHeaders(200, indexFile.length());
OutputStream responseStream = httpExchange.getResponseBody();
responseStream.write(indexFileByteArray, 0, indexFileByteArray.length);
responseStream.close();
}
這行代碼做了什麼'server.createContext(「/」,new indexHandler());'? –
它創建一個與路徑「/」關聯的http上下文。此路徑的所有請求都由indexHandler對象處理。 – bizkhit
如果要編寫HTTP服務器,則需要了解HTTP請求與其響應之間的關係。告訴你這將相當於一個教程。 – Raedwald