Я пытаюсь написать простой http-сервер, используя класс com.sun.net.httpserver. Я отправляю html-файл (index.html) в браузер при запуске, но я не знаю, как включить внешний файл css. Он работает, когда код CSS помещается внутри html-файла. Я знаю, что браузер должен отправить запрос, запросив сервер для файла css, но я не уверен, как получить этот запрос и отправить этот файл в браузер. Я добавляю фрагмент моего кода ниже, если это может быть полезно.Как включить файл css с помощью com.sun.net.httpserver?
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 ("/", новый indexHandler());'? –
Создает http-контекст, связанный с дорожкой «/». Все запросы для этого пути обрабатываются объектом indexHandler. – bizkhit
Если вы хотите написать HTTP-сервер, вам нужно понять, как взаимосвязь между HTTP-запросом и его ответом. Рассказывая, что это будет учебник. – Raedwald