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;
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Die Main-Klasse mit dem Einstiegspunkt der Anwendung
|
* Die Main-Klasse mit dem Einstiegspunkt der Anwendung.
|
||||||
*/
|
*/
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
|
@ -17,7 +17,12 @@ public class Main {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
HttpServer s = HttpServer.create(new InetSocketAddress(8000), 0);
|
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("/main", new StartView());
|
||||||
|
s.createContext("/auth", new AuthView());
|
||||||
|
|
||||||
s.setExecutor(null);
|
s.setExecutor(null);
|
||||||
s.start();
|
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;
|
OutputStream os;
|
||||||
|
|
||||||
response = "<h1>Beleg - Startseite!</h1><p>Bitte waehle aus einer der nachstehenden Optionen.</p>";
|
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());
|
t.sendResponseHeaders(200, response.length());
|
||||||
os.write(response.getBytes());
|
os.write(response.getBytes());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue