Web Engineering I - Material


Thema / Sitzung Materialien
Webserver programmieren Meinen primitiven Java-Webserver finden Sie in der Datei PrimitiveWebServer.java.
TCP, Client, Server
  • ServerSniffer.java, der die Kommunikation zwischen einem Server und einem Client belauscht.
  • MyTelnet.java, falls bei Ihnen telnet oder nc nicht laufen sollte.
  • AltCapsServer.java, ein Server, der Verbindungen annimmt und dann den Text in AlTcApS umwandelt.
  • CharToAscii.java, ein Server, der den geschickten Text Character für Character in den numerischen ASCII-Code umwandelt.
  • MessageServer.java, ein einfacher Kurznachrichten-Server zum Verschicken anonymer Nachrichten. Warnung: ich habe mir überhaupt eine Mühe gemacht, ihn sicher / threadsafe / benutzerfreundlich zu machen. Passwörter werden im Klartext angezeigt und übertragen etc. Nur für Demo-Zwecke, wie man in Java TCP-Verbindungen aufbaut und verwendet.
  • MySslTelnet.java, das gleiche wie MyTelnet.java, falls Sie mit HTTP-Requests rumspielen wollen mit einem Server, der nur HTTPS erlaubt.
HTTP: GET-Requests und Responses. Beispiele
  • Bei den Beispielen mit web1.hszg.de müssen Sie aufpassen, dass Sie den GET-Request mit zwei leeren Zeilen abschließen. Eine leere Zeile mit einem Leerzeichen (SPACE) wird den Browser zu einer Fehlermeldung veranlassen.
    java MyTelnet web1.hszg.de 80
    GET /scheder-lehre/WE-I/index.html HTTP/1.1
    host: web1.hszg.de 
    
    
    
    Sollte dem Server ein "Moved permanently" oder so entlocken. Der Grund ist, dass web1.hszg.de auf HTTPS besteht.
  • java MySslTelnet web1.hszg.de 443
    GET /scheder-lehre/WE-I/index.html HTTP/1.1
    host: web1.hszg.de 
    
    
    
    Dies sollte dem Server nun die tatsächliche Seite entlocken. Beachten Sie, dass 443 der Standard-Port für HTTPS ist.
  • Beispielcode, in dem wir per Hand Webserver spielen.
    java OnePersonServer 8080                    
    # geben Sie nun localhost:8080/example-2.html in die Adresszeile Ihres Browsers ein 
    GET /example-2.html HTTP/1.1
    Host: localhost:8080
    Upgrade-Insecure-Requests: 1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15
    Accept-Language: en-us
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    
    
    HTTP/1.1 200 OK
    content-type: text/html; charset=UTF-8
    
    <!DOCTYPE html>
    <html>
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        Dies ist ein HTTP-Response, den wir <em>per Hand</em> auf dem Terminal
        in unseren <code>OnePersonServer</code> eingegeben haben.
    </body>
    </html>
                    
  • 01-firstname-lastname.zip
  • 02-template-for-list.zip