#19 servlet - embedded tomcat
This commit is contained in:
@@ -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'
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.example;
|
package org.example.was;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.example;
|
package org.example.was;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -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;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.example.counter;
|
package org.example.was.counter;
|
||||||
|
|
||||||
public class RaceConditionDemo {
|
public class RaceConditionDemo {
|
||||||
|
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
GET http://localhost:8080/calculate?operand1=10&operator=-&operand2=20
|
GET http://localhost:8080/calculate?operand1=10&operator=%2b&operand2=20
|
||||||
10
my-framework/was-practice/webapp/index.html
Normal file
10
my-framework/was-practice/webapp/index.html
Normal 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>
|
||||||
Reference in New Issue
Block a user