From eeae8f280632e92bbb9a4ed0bf6db52e170f535e Mon Sep 17 00:00:00 2001 From: Elex Date: Thu, 12 Aug 2021 00:02:29 +0900 Subject: [PATCH] 2021-08-12 --- httpd/build.gradle.kts | 14 +++++ httpd/logback.xml | 20 +++++++ .../main/java/kr/pe/elex/examples/HttpD.java | 53 +++++++++++++++++++ settings.gradle.kts | 2 +- 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 httpd/build.gradle.kts create mode 100644 httpd/logback.xml create mode 100644 httpd/src/main/java/kr/pe/elex/examples/HttpD.java diff --git a/httpd/build.gradle.kts b/httpd/build.gradle.kts new file mode 100644 index 0000000..d2aab59 --- /dev/null +++ b/httpd/build.gradle.kts @@ -0,0 +1,14 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +plugins { + id("elex-java") +} + +dependencies { + +} diff --git a/httpd/logback.xml b/httpd/logback.xml new file mode 100644 index 0000000..74ff8a3 --- /dev/null +++ b/httpd/logback.xml @@ -0,0 +1,20 @@ + + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + diff --git a/httpd/src/main/java/kr/pe/elex/examples/HttpD.java b/httpd/src/main/java/kr/pe/elex/examples/HttpD.java new file mode 100644 index 0000000..4a5cb7a --- /dev/null +++ b/httpd/src/main/java/kr/pe/elex/examples/HttpD.java @@ -0,0 +1,53 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; +import lombok.extern.slf4j.Slf4j; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.time.LocalDateTime; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Slf4j +public class HttpD { + public static void main(String... args) throws IOException { + final ExecutorService threadPool = Executors.newCachedThreadPool(); + HttpServer httpServer = HttpServer.create(new InetSocketAddress(18080), 0); + httpServer.setExecutor(threadPool); + + httpServer.createContext("/", new HttpHandler() { + @Override + public void handle(final HttpExchange httpExchange) { + try { + httpExchange.getResponseHeaders().add("X-Datetime", LocalDateTime.now().toString()); + String message = "

Hello, world!

"; + //message += httpExchange.getRequestMethod(); + //BufferedReader reader = new BufferedReader(new InputStreamReader(httpExchange.getRequestBody())); + //message += reader.readLine(); + httpExchange.sendResponseHeaders(200, message.getBytes().length); + OutputStream os = httpExchange.getResponseBody(); + os.write(message.getBytes()); + os.flush(); + os.close(); + } catch (IOException e) { + } + + } + }); + httpServer.start(); + } + +} diff --git a/settings.gradle.kts b/settings.gradle.kts index afdf95d..2b95233 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,5 +12,5 @@ include( "ssh", "web-socket-servlet", "web-socket-client", "thread", "hibernate", "jdbc-sqlite", - "xml", "jackson", "jsoup", "markdown", "network" + "xml", "jackson", "jsoup", "markdown", "network", "httpd" )