モジュール jdk.httpserver
パッケージ com.sun.net.httpserver

クラスSimpleFileServer

java.lang.Object
com.sun.net.httpserver.SimpleFileServer

public final class SimpleFileServer extends Object
単純なHTTPファイル・サーバーとそのコンポーネント(テスト、開発およびデバッグの目的のみ)。

単純なファイル・サーバーは、次の3つのコンポーネントで構成されます:

  • 指定されたアドレスにバインドされているHttpServer
  • 特定のディレクトリ・パスからファイルを処理するHttpHandler
  • サーバーが処理する交換に関連するログ・メッセージを出力するオプションのFilter
個々のサーバー・コンポーネントは、提供されている静的メソッドを介して再利用および拡張するために取得できます。

単純なファイル・サーバー

createFileServer静的ファクトリ・メソッドは、即時利用可能な単純なファイル・サーバーであるHttpServerを返します。 サーバーには、指定されたディレクトリ・パス(およびそのサブディレクトリ)のファイルをサービスする初期ハンドラが付属しています。 出力レベルによって、System.outに出力されるログ・メッセージ(ある場合)が決まります。

単純なファイル・サーバーの例:


    var addr = new InetSocketAddress(8080);
    var server = SimpleFileServer.createFileServer(addr, Path.of("/some/path"), OutputLevel.INFO);
    server.start();
 

ファイル・ハンドラ

createFileHandler静的ファクトリ・メソッドは、ファイルおよびディレクトリのリストを提供するHttpHandlerを返します。 このハンドラは、HEADおよびGETリクエスト・メソッドのみをサポートします。他のリクエスト・メソッドを処理するには、サーバーにハンドラを追加するか、HttpHandlers.handleOrElse(Predicate, HttpHandler, HttpHandler)を使用して単一のハンドラを構成することでファイル・ハンドラを補完します。

単一のハンドラを作成する例:


    var handler = HttpHandlers.handleOrElse(
        (req) -> req.getRequestMethod().equals("PUT"),
        (exchange) -> {
            // validate and handle PUT request
        },
        SimpleFileServer.createFileHandler(Path.of("/some/path")))
    );
 

出力フィルタ

createOutputFilter静的ファクトリ・メソッドは、サーバーによって処理される交換に関連するログ・メッセージを出力するpost-processing filterを返します。 出力形式は、outputLevelで指定されます。

出力フィルタの例:


    var filter = SimpleFileServer.createOutputFilter(System.out, OutputLevel.VERBOSE);
    var server = HttpServer.create(new InetSocketAddress(8080), 10, "/some/path/", new SomeHandler(), filter);
    server.start();
 

jwebserverツール

単純なHTTPファイル・サーバーの実装は、jwebserverツールを介して提供されます。

ツール・ガイド:
jwebserver
導入されたバージョン:
18