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