diff --git a/my-framework/was-practice/build.gradle b/my-framework/was-practice/build.gradle index b8c4bac4..0dda6695 100644 --- a/my-framework/was-practice/build.gradle +++ b/my-framework/was-practice/build.gradle @@ -10,6 +10,10 @@ repositories { } dependencies { + // embedded tomcat + implementation 'org.apache.tomcat.embed:tomcat-embed-core:8.5.82' + implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:8.5.82' + implementation 'ch.qos.logback:logback-classic:1.2.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' diff --git a/my-framework/was-practice/src/main/java/org/example/CalculatorServlet.java b/my-framework/was-practice/src/main/java/org/example/CalculatorServlet.java new file mode 100644 index 00000000..5d096e18 --- /dev/null +++ b/my-framework/was-practice/src/main/java/org/example/CalculatorServlet.java @@ -0,0 +1,31 @@ +package org.example; + +import org.example.calculator.domain.Calculator; +import org.example.calculator.domain.PositiveNumber; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +//@WebServlet("/calculate") +public class CalculatorServlet extends HttpServlet { + private static final Logger log = LoggerFactory.getLogger(CalculatorServlet.class); + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { + log.info("service"); + int operand1 = Integer.parseInt(request.getParameter("operand1")); + String operator = request.getParameter("operator"); + int operand2 = Integer.parseInt(request.getParameter("operand2")); + + int result = Calculator.calculate(new PositiveNumber(operand1), operator, new PositiveNumber(operand2)); + + PrintWriter writer = response.getWriter(); + writer.println(result); + } +} \ No newline at end of file diff --git a/my-framework/was-practice/src/main/java/org/example/WebApplicationServerLauncher.java b/my-framework/was-practice/src/main/java/org/example/WebApplicationServerLauncher.java new file mode 100644 index 00000000..1191e68a --- /dev/null +++ b/my-framework/was-practice/src/main/java/org/example/WebApplicationServerLauncher.java @@ -0,0 +1,48 @@ +package org.example; + +import org.apache.catalina.Context; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.startup.Tomcat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServlet; +import java.io.File; + +public class WebApplicationServerLauncher { + + private static final Logger logger = LoggerFactory.getLogger(WebApplicationServerLauncher.class); + + public static void main(String[] args) throws LifecycleException { + + // 내장 톰캣 +// String appBase = "webapp/"; +// +// Tomcat tomcat = new Tomcat(); +// tomcat.setPort(8080); +// +// tomcat.addWebapp("/", new File(appBase).getAbsolutePath()); +// logger.info("configuring app with basedir: {}", new File("./" + appBase).getAbsolutePath()); +// +// tomcat.start(); +// tomcat.getServer().await(); + + String appBase = "webapp/"; + + Tomcat tomcat = new Tomcat(); + tomcat.setPort(8080); + + Context context = tomcat.addContext("", new File(appBase).getAbsolutePath()); + HttpServlet calculatorServlet = new CalculatorServlet(); + String servletName = "calculate"; + String urlPattern = "/calculate"; + + tomcat.addServlet("", servletName, calculatorServlet); + context.addServletMappingDecoded(urlPattern, servletName); + + logger.info("configuring app with basedir: {}", new File("./" + appBase).getAbsolutePath()); + + tomcat.start(); + tomcat.getServer().await(); + } +} diff --git a/my-framework/was-practice/src/main/java/org/example/ClientRequestHandler.java b/my-framework/was-practice/src/main/java/org/example/was/ClientRequestHandler.java similarity index 98% rename from my-framework/was-practice/src/main/java/org/example/ClientRequestHandler.java rename to my-framework/was-practice/src/main/java/org/example/was/ClientRequestHandler.java index 33f951d7..73b75e4b 100644 --- a/my-framework/was-practice/src/main/java/org/example/ClientRequestHandler.java +++ b/my-framework/was-practice/src/main/java/org/example/was/ClientRequestHandler.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; import org.example.calculator.domain.Calculator; import org.example.calculator.domain.PositiveNumber; diff --git a/my-framework/was-practice/src/main/java/org/example/CustomWebApplicationServer.java b/my-framework/was-practice/src/main/java/org/example/was/CustomWebApplicationServer.java similarity index 98% rename from my-framework/was-practice/src/main/java/org/example/CustomWebApplicationServer.java rename to my-framework/was-practice/src/main/java/org/example/was/CustomWebApplicationServer.java index 8fa3422b..295146c3 100644 --- a/my-framework/was-practice/src/main/java/org/example/CustomWebApplicationServer.java +++ b/my-framework/was-practice/src/main/java/org/example/was/CustomWebApplicationServer.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/my-framework/was-practice/src/main/java/org/example/HttpRequest.java b/my-framework/was-practice/src/main/java/org/example/was/HttpRequest.java similarity index 95% rename from my-framework/was-practice/src/main/java/org/example/HttpRequest.java rename to my-framework/was-practice/src/main/java/org/example/was/HttpRequest.java index 200a2e01..56d22f95 100644 --- a/my-framework/was-practice/src/main/java/org/example/HttpRequest.java +++ b/my-framework/was-practice/src/main/java/org/example/was/HttpRequest.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; import java.io.BufferedReader; import java.io.IOException; diff --git a/my-framework/was-practice/src/main/java/org/example/HttpResponse.java b/my-framework/was-practice/src/main/java/org/example/was/HttpResponse.java similarity index 97% rename from my-framework/was-practice/src/main/java/org/example/HttpResponse.java rename to my-framework/was-practice/src/main/java/org/example/was/HttpResponse.java index 7341bb69..2539c257 100644 --- a/my-framework/was-practice/src/main/java/org/example/HttpResponse.java +++ b/my-framework/was-practice/src/main/java/org/example/was/HttpResponse.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/my-framework/was-practice/src/main/java/org/example/Main.java b/my-framework/was-practice/src/main/java/org/example/was/Main.java similarity index 87% rename from my-framework/was-practice/src/main/java/org/example/Main.java rename to my-framework/was-practice/src/main/java/org/example/was/Main.java index 4d186790..1eefba7a 100644 --- a/my-framework/was-practice/src/main/java/org/example/Main.java +++ b/my-framework/was-practice/src/main/java/org/example/was/Main.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; import java.io.IOException; diff --git a/my-framework/was-practice/src/main/java/org/example/QueryString.java b/my-framework/was-practice/src/main/java/org/example/was/QueryString.java similarity index 93% rename from my-framework/was-practice/src/main/java/org/example/QueryString.java rename to my-framework/was-practice/src/main/java/org/example/was/QueryString.java index b8945f2b..642466b2 100644 --- a/my-framework/was-practice/src/main/java/org/example/QueryString.java +++ b/my-framework/was-practice/src/main/java/org/example/was/QueryString.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; public class QueryString { private final String key; diff --git a/my-framework/was-practice/src/main/java/org/example/QueryStrings.java b/my-framework/was-practice/src/main/java/org/example/was/QueryStrings.java similarity index 97% rename from my-framework/was-practice/src/main/java/org/example/QueryStrings.java rename to my-framework/was-practice/src/main/java/org/example/was/QueryStrings.java index bd90f161..63d38f09 100644 --- a/my-framework/was-practice/src/main/java/org/example/QueryStrings.java +++ b/my-framework/was-practice/src/main/java/org/example/was/QueryStrings.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; import java.util.ArrayList; import java.util.Arrays; diff --git a/my-framework/was-practice/src/main/java/org/example/RequestLine.java b/my-framework/was-practice/src/main/java/org/example/was/RequestLine.java similarity index 98% rename from my-framework/was-practice/src/main/java/org/example/RequestLine.java rename to my-framework/was-practice/src/main/java/org/example/was/RequestLine.java index 232ab29d..44404b2e 100644 --- a/my-framework/was-practice/src/main/java/org/example/RequestLine.java +++ b/my-framework/was-practice/src/main/java/org/example/was/RequestLine.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.was; import java.util.Objects; diff --git a/my-framework/was-practice/src/main/java/org/example/counter/Counter.java b/my-framework/was-practice/src/main/java/org/example/was/counter/Counter.java similarity index 95% rename from my-framework/was-practice/src/main/java/org/example/counter/Counter.java rename to my-framework/was-practice/src/main/java/org/example/was/counter/Counter.java index a52887d4..3b5971ee 100644 --- a/my-framework/was-practice/src/main/java/org/example/counter/Counter.java +++ b/my-framework/was-practice/src/main/java/org/example/was/counter/Counter.java @@ -1,4 +1,4 @@ -package org.example.counter; +package org.example.was.counter; public class Counter implements Runnable { private int count = 0; diff --git a/my-framework/was-practice/src/main/java/org/example/counter/RaceConditionDemo.java b/my-framework/was-practice/src/main/java/org/example/was/counter/RaceConditionDemo.java similarity index 91% rename from my-framework/was-practice/src/main/java/org/example/counter/RaceConditionDemo.java rename to my-framework/was-practice/src/main/java/org/example/was/counter/RaceConditionDemo.java index e6940019..03f95d12 100644 --- a/my-framework/was-practice/src/main/java/org/example/counter/RaceConditionDemo.java +++ b/my-framework/was-practice/src/main/java/org/example/was/counter/RaceConditionDemo.java @@ -1,4 +1,4 @@ -package org.example.counter; +package org.example.was.counter; public class RaceConditionDemo { diff --git a/my-framework/was-practice/src/test/java/org/example/QueryStringTest.java b/my-framework/was-practice/src/test/java/org/example/QueryStringTest.java index d0262ece..5a33d199 100644 --- a/my-framework/was-practice/src/test/java/org/example/QueryStringTest.java +++ b/my-framework/was-practice/src/test/java/org/example/QueryStringTest.java @@ -1,6 +1,7 @@ package org.example; import org.assertj.core.api.Assertions; +import org.example.was.QueryString; import org.junit.jupiter.api.Test; public class QueryStringTest { diff --git a/my-framework/was-practice/src/test/java/org/example/QueryStringsTest.java b/my-framework/was-practice/src/test/java/org/example/QueryStringsTest.java index 5cc5ee0b..a1482d40 100644 --- a/my-framework/was-practice/src/test/java/org/example/QueryStringsTest.java +++ b/my-framework/was-practice/src/test/java/org/example/QueryStringsTest.java @@ -1,6 +1,7 @@ package org.example; import org.assertj.core.api.Assertions; +import org.example.was.QueryStrings; import org.junit.jupiter.api.Test; public class QueryStringsTest { diff --git a/my-framework/was-practice/src/test/java/org/example/RequestLineTest.java b/my-framework/was-practice/src/test/java/org/example/RequestLineTest.java index d791ea0b..68a7396e 100644 --- a/my-framework/was-practice/src/test/java/org/example/RequestLineTest.java +++ b/my-framework/was-practice/src/test/java/org/example/RequestLineTest.java @@ -1,5 +1,6 @@ package org.example; +import org.example.was.RequestLine; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; diff --git a/my-framework/was-practice/test.http b/my-framework/was-practice/test.http index bdf7c7d2..d71b195a 100644 --- a/my-framework/was-practice/test.http +++ b/my-framework/was-practice/test.http @@ -1 +1 @@ -GET http://localhost:8080/calculate?operand1=10&operator=-&operand2=20 \ No newline at end of file +GET http://localhost:8080/calculate?operand1=10&operator=%2b&operand2=20 \ No newline at end of file diff --git a/my-framework/was-practice/webapp/index.html b/my-framework/was-practice/webapp/index.html new file mode 100644 index 00000000..b1f7621e --- /dev/null +++ b/my-framework/was-practice/webapp/index.html @@ -0,0 +1,10 @@ + + + + + Hello World! + + +

Hello World!

+ + \ No newline at end of file