2016-06-11 11 views
2

Ich habe einen sehr einfachen Java Web Server (nach this tutorial), gibt es eine Möglichkeit, auf die index.html Datei (vom Bootstrap kommend) im Handler zu zeigen, anstatt die Antwort hart zu codieren?Wie auf index.html mit dem integrierten Java-Web-Server verwiesen wird?

import java.io.*; 
import java.net.InetSocketAddress; 
import com.sun.net.httpserver.*; 

public class SO {  
    public static void main(String[] args) throws Exception { 
     int port = 9000; 
     HttpServer server = HttpServer.create(new InetSocketAddress(port), 0); 
     System.out.println("server started at " + port); 
     server.createContext("/", new RootHandler()); 
     server.setExecutor(null); 
     server.start(); 
    } 

    public static class RootHandler implements HttpHandler { 

     @Override 
     public void handle(HttpExchange he) throws IOException { 
      String response = "<h1>Static Response</h1>"; 
      he.sendResponseHeaders(200, response.length()); 
      OutputStream os = he.getResponseBody(); 
      os.write(response.getBytes()); 
      os.close(); 
     } 
    } 
} 
+1

Fun fact: deutete auf die index.html nicht möglich ist, weil es keine Zeiger in Java :) – mjn

+0

Die Frage ist nicht klar. Möchten Sie den Inhalt einer lokalen index.html-Datei als Antworttext bereitstellen? – mjn

+0

Genau, ich möchte den Inhalt von index.html als Antworttext anzeigen – Ninius86

Antwort

4

Der integrierte HttpServer ist sehr Low-Level und, AFAIK, bietet diese Funktion nicht. Aber nichts hindert Sie daran, die Datei zu lesen und deren Inhalt an die Antwortausgabestream zu senden:

File file = new File("index.html"); 
he.sendResponseHeaders(200, file.length()); 
try (OutputStream os = he.getResponseBody()) { 
    Files.copy(file.toPath(), os); 
}