From 63a9c13941623c3cfd5253046e70021779dc601a Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 3 Dec 2025 16:34:53 +0100 Subject: [PATCH] Add login submission from front-end --- assets/pages/index.html | 40 +++++++++---- .../common/common/src/html/HtmlManager.java | 7 +-- .../java/httpsServer/httpServer/src/Main.java | 58 +++++++++++++------ 3 files changed, 69 insertions(+), 36 deletions(-) diff --git a/assets/pages/index.html b/assets/pages/index.html index 1cd8c8c..237b37d 100644 --- a/assets/pages/index.html +++ b/assets/pages/index.html @@ -22,24 +22,42 @@ -
-

Welcome!

-
-
- +
- +
- +
- - - \ No newline at end of file diff --git a/src/main/java/common/common/src/html/HtmlManager.java b/src/main/java/common/common/src/html/HtmlManager.java index 6acf813..467e1e4 100644 --- a/src/main/java/common/common/src/html/HtmlManager.java +++ b/src/main/java/common/common/src/html/HtmlManager.java @@ -8,12 +8,7 @@ import java.io.IOException; public class HtmlManager { public String serveFile(String path){ - String content = readFile(path); - return "HTTP/1.1 200 OK\r\n" + - "Content-Type: text/html\r\n" + - "Content-Length: " + content.length() + "\r\n" + - "\r\n" + - content; + return readFile(path); } private String readFile(String path){ diff --git a/src/main/java/httpsServer/httpServer/src/Main.java b/src/main/java/httpsServer/httpServer/src/Main.java index 20f98bd..010007b 100644 --- a/src/main/java/httpsServer/httpServer/src/Main.java +++ b/src/main/java/httpsServer/httpServer/src/Main.java @@ -1,35 +1,55 @@ package httpsServer.httpServer.src; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpServer; import common.common.src.html.HtmlManager; -import common.common.src.socket.SocketManager; import java.io.*; -import java.net.*; +import java.net.InetSocketAddress; +import java.nio.charset.StandardCharsets; public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { + final int port = 8043; final HtmlManager htmlManager = new HtmlManager(); - int port = 8043; - try (ServerSocket serverSocket = new ServerSocket(port)) { - System.out.println("Server started on port " + port); + HttpServer server = HttpServer.create(new InetSocketAddress(port), 5); - while (true) { - try (Socket clientSocket = serverSocket.accept()) { - BufferedReader in = new BufferedReader( - new InputStreamReader(clientSocket.getInputStream())); + System.out.println("Server started on port " + port); - String requestLine = in.readLine(); - System.out.println("Request: " + requestLine); + server.createContext("/", exchange -> { + String content = htmlManager.serveFile("./assets/pages/index.html"); + byte[] data = content.getBytes(StandardCharsets.UTF_8); - String response = htmlManager.serveFile("./assets/pages/index.html"); - SocketManager.send(clientSocket, response); + exchange.getResponseHeaders().add("Content-Type", "text/html; charset=UTF-8"); + exchange.sendResponseHeaders(200, data.length); + send(exchange, data); + }); - } catch (IOException e) { - System.err.println("Client connection error: " + e.getMessage()); - } + server.createContext("/login", exchange -> { + if (!"POST".equalsIgnoreCase(exchange.getRequestMethod())) { + exchange.sendResponseHeaders(405, -1); + return; } - } catch (IOException e) { - e.printStackTrace(); + + InputStream is = exchange.getRequestBody(); + String body = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)) + .lines() + .reduce("", (acc, line) -> acc + line + "\n"); + + System.out.println("Received POST data:\n" + body); + + String response = "Data received!"; + exchange.sendResponseHeaders(200, response.getBytes().length); + send(exchange, response.getBytes()); + }); + + server.start(); + } + + private static void send(HttpExchange exchange, byte[] data) throws IOException { + try (OutputStream os = exchange.getResponseBody()) { + os.write(data); } } + }