#22 mvc: dispatcher servlet

This commit is contained in:
haerong22
2022-09-24 02:14:01 +09:00
parent b149204c16
commit 89a253d36e
5 changed files with 90 additions and 0 deletions

1
my-framework/mvc-practice/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
tomcat.8080/**

View File

@@ -10,7 +10,12 @@ repositories {
}
dependencies {
implementation 'org.apache.tomcat.embed:tomcat-embed-core:9.0.58'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:9.0.58'
implementation 'javax.servlet:javax.servlet-api:4.0.1'
implementation 'javax.servlet:jstl:1.2'
implementation 'org.reflections:reflections:0.10.2'
implementation 'ch.qos.logback:logback-classic:1.2.11'

View File

@@ -0,0 +1,37 @@
package org.example;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
public class WebApplicationServer {
private static final Logger log = LoggerFactory.getLogger(WebApplicationServer.class);
public static void main(String[] args) throws LifecycleException {
String webappDirLocation = "webapp/";
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
tomcat.getConnector();
Context ctx = tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
log.info("configuring app with basedir: {}", new File("./" + webappDirLocation).getAbsolutePath());
File additionWebInfClasses = new File("build/classes");
WebResourceRoot resources = new StandardRoot(ctx);
resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes",
additionWebInfClasses.getAbsolutePath(), "/"));
ctx.setResources(resources);
tomcat.start();
tomcat.getServer().await();
}
}

View File

@@ -0,0 +1,32 @@
package org.example.mvc;
import org.example.mvc.controller.Controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/")
public class DispatcherServlet extends HttpServlet {
private static final Logger log = LoggerFactory.getLogger(DispatcherServlet.class);
private RequestMappingHandlerMapping requestMappingHandlerMapping;
@Override
public void init() throws ServletException {
requestMappingHandlerMapping = new RequestMappingHandlerMapping();
requestMappingHandlerMapping.init();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("[DispatcherServlet] service started.");
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%-5level] [%thread] [%logger{36}] - %m%n</Pattern>
</layout>
</appender>
<logger name="org.example" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>