[JAVA] Einführung in Ratpack (3) - Hallo Welt, detaillierte Erklärung

Ratpack Einführungsserie

  1. Einführung in Ratpack (1) - Was ist Ratpack
  2. Einführung in Ratpack (2) --Architecture
  3. Einführung in Ratpack (3) - Hallo Welt, ausführliche Erklärung
  4. Einführung in Ratpack (4) - Routing & statischer Inhalt
  5. Einführung in Ratpack (5) --Json & Registry
  6. Einführung in Ratpack (6) --Promise
  7. Einführung in Ratpack (7) - Guice & Spring
  8. Einführung in Ratpack (8) - Sitzung
  9. Einführung in Ratpack (9) - Thymeleaf

Hallo Welt detaillierte Erklärung

Hier werden wir das Hello World-Beispiel von Erster Artikel etwas komplizierter machen und versuchen, uns an das Wasser namens Ratpack zu gewöhnen.

Da der Typ hier angegeben ist, wird er absichtlich redundant geschrieben. Wirf keine Steine.

public final class Sample3_HelloWorldRevisited {


    public static void main( String[] args ) throws Exception {

        ServerConfig config = ServerConfig.builder()
                                          .port( 5050 )
                                          .connectTimeoutMillis( 10000 )
                                          .threads( 8 )
                                          .development( true )
                                          .build();

        Registry registry = Registry.empty();

        Action<Chain> handlers = ( Chain chain ) -> {

            Handler handler = ( Context ctx ) -> {
                ctx.render( "hello, world" );
            };

            chain.get( handler );
        };

        RatpackServer.of( spec -> spec.serverConfig( config )
                                      .registry( registry )
                                      .handlers( handlers ) )
                     .start();
    }

}

ServerConfig

Eine Klasse zum Ändern von Servereinstellungen. Hier können Sie die Portnummer usw. einstellen.

Ich denke, es ist am einfachsten, "ServerConfigBuilder" zu verwenden, sobald es verfügbar ist. Es gibt auch Methoden zum Lesen von Einstellungen aus Dateien, z. B. "json ()" und "yaml ()". Es gibt andere Methoden zum Festlegen von Systemeigenschaften und Argumenten, sodass Sie "ServerConfig" nach Belieben erstellen können.

development(boolean)

Ein Flag, das den Entwicklungsmodus aktiviert. Wenn aktiviert, wird automatisch ein Handler hinzugefügt, wenn ein Fehler auftritt.

Nachfolgend finden Sie einen Vergleich, wenn ein tatsächlicher 404-Fehler auftritt. Zusätzlich zum Vorhandensein oder Fehlen der 404-Fehlerseite von Ratpack werden Sie gewarnt, Ihren eigenen Handler im Protokoll zu definieren.

development(true) 404_1.PNG

19:02:26.231 [ratpack-compute-1-2] ERROR ratpack.error.internal.DefaultDevelopmentErrorHandler - 404 client error for request to /hoge

development(false) 404_2.PNG

19:00:55.861 [ratpack-compute-1-4] WARN ratpack.error.internal.DefaultProductionErrorHandler - Default production error handler used to render client error, please add a ratpack.error.ClientErrorHandler instance to your application (method: GET, uri: /hoge)

development (true) ist einfach zu bedienen, es wird jedoch empfohlen, einen eigenen ErrorHandler in einer Produktionsumgebung zu erstellen.

Es gibt zwei Arten von Fehlerbehandlungsroutinen: "ClientErrorHandler" und "ServerErrorHandler".

ClientErrorHandler wird aufgerufen, wenn ein Problem mit der Clientanforderung vorliegt, z. B. 404. Überschreibt die Methode "error ()", die die Statuscodes "Context" und "int" als Argumente verwendet.

ServerErrorHandler wird aufgerufen, wenn im Handler ein Fehler auftritt. Es gibt eine error () Methode, die einen Context und eine Throwable verwendet, die die aufgetretene Ausnahme darstellt. Da "ServerErrorHandler" der letzte Schritt bei der Fehlerbehandlung in Ratpack ist, wird grundsätzlich empfohlen, keine Ausnahme auszulösen.

Übrigens, da diese Methode "Throwable" als Argument anstelle von "Exception" hat, wird sie verarbeitet, selbst wenn "Error" auftritt. In Java wird im Allgemeinen empfohlen, "Fehler" nicht abzufangen. In diesem Fall ist es besser, nicht zu versuchen, eine Wiederherstellung durchzuführen.

Registry

Diese Klasse registriert Teile wie Module im Ratpack-Server. Wir werden diesmal nichts verwenden, also werden wir eine leere Implementierung verwenden. Die oben genannten Fehlerbehandlungsroutinen usw. können durch Registrierung in dieser Registrierung verwendet werden.

handlers

Ratpack-Routen von mehreren "Handlern", gruppiert nach "Kette". Die Methode "Chain.get (String, Handler)" bindet eine HTTP-GET-Anforderung an einen Argumenthandler. Die Zeichenfolge des ersten Arguments ist der Pfad. Wenn dies wie folgt weggelassen wird, wird es der Route zugeordnet.

Context.render (Object) ist die Methode, die den Hauptteil der Antwort ausgibt. Da String diesmal als Argument übergeben wird, wird diese Zeichenfolge unverändert ausgegeben. Es ist jedoch auch möglich, ein anderes Objekt als die Zeichenfolge zu übergeben. render () ist ein Mechanismus, bei dem der in Registry registrierte Renderer je nach Typ aufgerufen und in eine Antwort umgewandelt wird. String hat einen eingebauten "Renderer" (um genau zu sein, CharSequence), so dass Sie ihn mit "Context.render ()" aufrufen können, ohne einen Renderer explizit zu registrieren.

RatpackServer.of( spec -> spec.serverConfig( config )
                              .registry( registry )
                              .handlers( handlers ) )
             .start();

Erstellen Sie eine "RatpackServer" -Instanz, indem Sie "ServerConfig", "Registry" und "Handler" in der Methode "of ()" festlegen. Die Methode start () startet den Server und akzeptiert Anforderungen.

Jede Methode von "RatpackServerSpec" ("serverConfig ()", "registry ()", "handler ()" und "handlers ()") hat eine Instanz der entsprechenden Klasse als Argument und über "Action". Es gibt verschiedene Dinge zu setzen. Persönlich finde ich es, wie im Beispiel erwähnt, einfacher, Instanzen für Konfigurationen und Registrierung und "Aktion" für Handler zu verwenden. Dieser Bereich ist subjektiv, daher empfehlen wir Ihnen, verschiedene Dinge auszuprobieren.

Recommended Posts

Einführung in Ratpack (3) - Hallo Welt, detaillierte Erklärung
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
Einführung in Ratpack (2) -Architektur
Einführung in Ratpack (5) --Json & Registry
Einführung in Ratpack (7) - Guice & Spring
Einführung in Ratpack (1) - Was ist Ratpack?
Einführung in Ratpack (Extra Edition) - Mit Sentry
Einführung in Ruby 2
Einführung in Ratpack (Extra Edition) - Ratpack in Kotlin geschrieben
Lesen Sie "Hallo Welt"
Einführung in web3j
Java, Hallo Welt!
Zurück zum Anfang verspottete Java-Kisama Hello World-
[Java] Einführung in Java
Einführung in die Migration
Java Hallo Welt
Einführung in Java
Versuchen Sie, Hallo Welt mit Frühling + Gradle anzuzeigen
Einführung in Doma
Erste JavaFX ~ Einfache Einführung Hallo weltähnliche GUI-Erstellung ~
Mit Rails + Docker einfach Hallo Welt anzuzeigen
[Einführung] Zeigen Sie Android Studio Hello World auf dem Emulator an
Einführung in JAR-Dateien
"Hallo Welt" in Java
Einführung in die Bitarithmetik
Java lernen (1) -Hallo Welt
Lesen Sie System.out.println ("Hallo Welt")
Schreiben wir Hello World
Einführung in PlayFramework 2.7 ① Übersicht
Einführung in Entwurfsmuster (Einführung)
Hallo Welt in Java
Einführung in die praktische Programmierung
Einführung in den Befehl javadoc
Java-Teil 1-Hallo Welt studieren
Einführung in den Befehl jar
Detaillierte Erklärung Schauspieler (libGDX)
Einführung in den Lambda-Stil
Einführung in den Java-Befehl
Hallo Welt mit Web Assembly
Einführung in die Keycloak-Entwicklung
Hallo Welt mit Micronaut
Einführung in den Befehl javac
[Einführung in Docker] ~ Kürzeste Erklärung bis zum Start von Jupyter Lab ~
[Einführung in MVEL] Mit dem Ziel, der beste MVELer der Welt zu sein