#19 servlet - embedded tomcat

This commit is contained in:
haerong22
2022-09-06 02:01:15 +09:00
parent a5320f4fbc
commit 8bc9f18971
18 changed files with 107 additions and 11 deletions

View File

@@ -10,6 +10,10 @@ repositories {
} }
dependencies { 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' implementation 'ch.qos.logback:logback-classic:1.2.3'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'

View File

@@ -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);
}
}

View File

@@ -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();
}
}

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
import org.example.calculator.domain.Calculator; import org.example.calculator.domain.Calculator;
import org.example.calculator.domain.PositiveNumber; import org.example.calculator.domain.PositiveNumber;

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
import java.io.IOException; import java.io.IOException;

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
public class QueryString { public class QueryString {
private final String key; private final String key;

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;

View File

@@ -1,4 +1,4 @@
package org.example; package org.example.was;
import java.util.Objects; import java.util.Objects;

View File

@@ -1,4 +1,4 @@
package org.example.counter; package org.example.was.counter;
public class Counter implements Runnable { public class Counter implements Runnable {
private int count = 0; private int count = 0;

View File

@@ -1,4 +1,4 @@
package org.example.counter; package org.example.was.counter;
public class RaceConditionDemo { public class RaceConditionDemo {

View File

@@ -1,6 +1,7 @@
package org.example; package org.example;
import org.assertj.core.api.Assertions; import org.assertj.core.api.Assertions;
import org.example.was.QueryString;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
public class QueryStringTest { public class QueryStringTest {

View File

@@ -1,6 +1,7 @@
package org.example; package org.example;
import org.assertj.core.api.Assertions; import org.assertj.core.api.Assertions;
import org.example.was.QueryStrings;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
public class QueryStringsTest { public class QueryStringsTest {

View File

@@ -1,5 +1,6 @@
package org.example; package org.example;
import org.example.was.RequestLine;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@@ -1 +1 @@
GET http://localhost:8080/calculate?operand1=10&operator=-&operand2=20 GET http://localhost:8080/calculate?operand1=10&operator=%2b&operand2=20

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>