Ein minimalistischer HTTP-Server
ulrich
2021-03-27 ee6a3e9057bff6e30e6deff43100bcf2bf9bfba5
src/de/uhilger/minsrv/handler/FileHandler.java
@@ -57,6 +57,7 @@
  public static final String ACCEPT_RANGES_HEADER = "Accept-Ranges";
  public static final String LAST_MODIFIED_DATE_HEADER = "Last-Modified";
  public static final String CONTENT_TYPE = "Content-Type";
  public static final String CONTENT_LENGTH = "Content-Length";
  /* Statuscodes */
  public static final int SC_OK = 200;
@@ -110,7 +111,7 @@
      if (headers.containsKey(RANGE_HEADER)) {
        serveFileParts(e, new File(fileBase, fName));
      } else {
        if (fName.endsWith(Server.STR_SLASH)) {
        if (fName.length() < 1 || fName.endsWith(Server.STR_SLASH)) {
          fName += WELCOME_FILE;
        }
        serveFile(e, new File(fileBase, fName));
@@ -118,6 +119,13 @@
    }
  }
  /**
   * Den Namen der gew&uuml;nschten Datei aus der HTTP-Anfrage ermitteln
   *
   * @param e das Objekt mit Methoden zur Untersuchung der Anfrage sowie zum
   * Anfertigen und Senden der Antwort
   * @return Name der gew&uuml;nschten Datei
   */
  protected String getFileName(HttpExchange e) {
    String ctxPath = e.getHttpContext().getPath();
    String uriPath = e.getRequestURI().getPath();
@@ -136,6 +144,7 @@
  protected void serveFile(HttpExchange e, File file) throws IOException {
    if (file.exists()) {
      setHeaders(e, file);
      e.getResponseHeaders().set(CONTENT_LENGTH, Long.toString(file.length()));
      e.sendResponseHeaders(SC_OK, file.length());
      if(HTTP_GET.equalsIgnoreCase(e.getRequestMethod())) {
        InputStream in = new FileInputStream(file);
@@ -354,7 +363,7 @@
   * aus Bytes, der sich aus den Bytepositionen des Beginns und Endes 
   * des Bereiches ergibt.
   */
  class Range {
  public class Range {
    private long start;
    private long end;