English version of this page

Letzte Änderungen

1.8.3 21.03.2021
The minLevel for logging can now be configured as string.
Info messages are now positioned between DEBUG and WARNING.
I also added an example for HTTP Basic authorization.

1.8.2 08.03.2021
Fix threadId not printed in log file.

1.8.1 07.02.2021
Add Cookie attribute "SameSite".
SessionStore does now emit a signal when a session expires.

1.8.0 06.02.2021
Fix compatibility issues with Qt 4.7 and 6.0.
Removed qtservice, use the Non-Sucking Service Manager instead.

1.7.11 28.12.2019
Fix Http Headers are not properly received if the two characters of a line-break (\r\n) were not received together in the same ethernet package.

1.7.10 04.12.2019
Add support for other SSL implementations than OpenSSL (as far Qt supports it).
Fix log bufffer was triggered only by severities above minLevel (should be "at least" minLevel).

1.7.9 20.06.2019
INFO messages do not trigger writing out buffered log messages anymore when bufferSize>0 and minLevel>0.

Startseite  

QtWebApp HTTP Server in C++

QtWepApp ist eine HTTP Server Library in C++, inspiriert von Java Servlets. Für Linux, Windows, Mac OS und viele andere Betriebsysteme, die das Qt Framework unterstützt.

QtWebApp enthält folgende Komponenten:

Diese Komponenten sind unabhängig voneinander verwendbar.

Der Logger verbessert Speicherplatz und Leistung, indem er Debug Meldungen im Speicher zurück hält bis ein Fehler auftritt. So lange alles gut läuft, werden keine Debug Meldungen ausgegeben. Änderungen an der Konfiguration des Loggers werden automatisch ohne Neustart aktiv. Ein sehr kleines Anwendungs-Beispiel:

// Der Request Handler empfängt und beantwortet HTTP Requests
void MyRequestHandler::service(HttpRequest& request, HttpResponse& response)
{
    // Frage einen Request-Parameter ab
    QByteArray username=request.getParameter("username");

    // Setze einen Antwort-Header
    response.setHeader("Content-Type", "text/html; charset=UTF-8");

    // Erzeuge das HTML Dokument
    response.write("<html><body>");
    response.write("Hallo ");
    response.write(username);
    response.write("</body></html>");
}

// Das Hauptprogramm startet den HTTP Server
int main(int argc, char *argv[]) 
{
    QCoreApplication app(argc,argv);
        
    new HttpListener(
        new QSettings("configfile.ini",QSettings::IniFormat,&app),
        new MyRequestHandler(&app),
        &app);

    return app.exec();
}

Durch den geringen Speicherbedarf von ca. 2MB eignet sich der Webserver für embedded Systeme. Zum Beispiel für den Bier-brau Automat von Sebastian Düll. Aber er ist auch für große Web-Dienste geeignet.

Quelltext, Anleitung, API Dokumentation .

Du darfst die Software unter Einhaltung der LGPL Lizenz verwenden. Die API ist hier dokumentiert.

Dankeschön

Die aktuelle hohe Qualität der Library ist das Ergebnis der Zusammenarbeit vieler Leute. Ich möchte an dieser Stelle den Helfern danken, die QtWebApp in produktiver Umgebung umfangreich getestet und so zur Verbesserung beigetragen haben.