Zwischenstand
This commit is contained in:
parent
4b78ccbbd9
commit
4b19b5b0f3
4 changed files with 77 additions and 2 deletions
|
@ -6,7 +6,7 @@ import com.sun.net.httpserver.*;
|
|||
import java.net.InetSocketAddress;
|
||||
|
||||
/**
|
||||
* Die Main-Klasse mit dem Einstiegspunkt der Anwendung
|
||||
* Die Main-Klasse mit dem Einstiegspunkt der Anwendung.
|
||||
*/
|
||||
public class Main {
|
||||
|
||||
|
@ -17,7 +17,12 @@ public class Main {
|
|||
public static void main(String[] args) throws Exception {
|
||||
HttpServer s = HttpServer.create(new InetSocketAddress(8000), 0);
|
||||
|
||||
// Kontexts werden nach längstem Matching ausgewählt (wieso?)
|
||||
// Alle unbekannten Anfragen die mit / starten werden also an die RootView gegeben
|
||||
// TODO: Error Handling!!!
|
||||
s.createContext("/", new RootView());
|
||||
s.createContext("/main", new StartView());
|
||||
s.createContext("/auth", new AuthView());
|
||||
|
||||
s.setExecutor(null);
|
||||
s.start();
|
||||
|
|
46
src/views/AuthView.java
Normal file
46
src/views/AuthView.java
Normal file
|
@ -0,0 +1,46 @@
|
|||
package hsmw.jotto5.beleg.views;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import com.sun.net.httpserver.*;
|
||||
|
||||
/**
|
||||
* Stellt das Login-Formular bereit und verwaltet die Anmeldung.
|
||||
*
|
||||
* Bei einer GET-Anfrage ohne gültige Session wird das Login-Formular
|
||||
* zurückgegeben. Bei einer POST-Anfrage wird versucht, mit den gegebenen
|
||||
* Anmeldedaten in den name und pass Anfragewerten zu autorisieren.
|
||||
*
|
||||
* Bei erfolgter Autorisierung oder bei Aufruf mit gültiger Session wird an den
|
||||
* main Endpunkt weitergeleitet.
|
||||
*/
|
||||
public class AuthView implements HttpHandler {
|
||||
|
||||
public void handle(HttpExchange t) throws IOException {
|
||||
String response;
|
||||
OutputStream os;
|
||||
boolean login = false;
|
||||
|
||||
os = t.getResponseBody();
|
||||
|
||||
// TODO: nach Session prüfen
|
||||
|
||||
if (t.getRequestMethod().equals("POST")) {
|
||||
// TODO: Versuchen zu autorisieren
|
||||
login = true;
|
||||
} else {
|
||||
response = "<h1>Beleg - Anmeldung!</h1>";
|
||||
response += "<form method=\"POST\"><input type=\"text\" name=\"name\"><br><input type=\"password\" name=\"pass\"><br><input type=\"submit\">";
|
||||
t.sendResponseHeaders(200, response.length());
|
||||
os.write(response.getBytes());
|
||||
}
|
||||
|
||||
if (login) {
|
||||
t.getResponseHeaders().add("Location", "/main");
|
||||
t.sendResponseHeaders(308, 0);
|
||||
}
|
||||
|
||||
os.close();
|
||||
}
|
||||
|
||||
}
|
24
src/views/RootView.java
Normal file
24
src/views/RootView.java
Normal file
|
@ -0,0 +1,24 @@
|
|||
package hsmw.jotto5.beleg.views;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import com.sun.net.httpserver.*;
|
||||
|
||||
/**
|
||||
* Fängt alle Anfragen an "/" und unbekannte URLs ab.
|
||||
*
|
||||
* Ist die View die aufgerufen wird wenn die Basis-Domain der Anwendung
|
||||
* aufgerufen wird. Aufgrund des eigenartigen Routings des HttpServers
|
||||
* übernimmt diese Klasse auch ein Paar sonstige Routing-Aufgaben, wie das
|
||||
* Anzeigen der 404-Seite bei nicht existierendem Endpunkt.
|
||||
*/
|
||||
public class RootView implements HttpHandler {
|
||||
|
||||
public void handle(HttpExchange t) throws IOException {
|
||||
// wir leiten an /main weiter, dort passiert dann die restliche Magie
|
||||
t.getResponseHeaders().add("Location", "/main");
|
||||
t.sendResponseHeaders(308, 0); // 308 => "Permanent Redirect"
|
||||
t.getResponseBody().close();
|
||||
}
|
||||
|
||||
}
|
|
@ -11,7 +11,7 @@ public class StartView implements HttpHandler {
|
|||
OutputStream os;
|
||||
|
||||
response = "<h1>Beleg - Startseite!</h1><p>Bitte waehle aus einer der nachstehenden Optionen.</p>";
|
||||
od = t.getResponseBody();
|
||||
os = t.getResponseBody();
|
||||
|
||||
t.sendResponseHeaders(200, response.length());
|
||||
os.write(response.getBytes());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue