美文网首页
SpringBoot(2) 内置Tomcat API的使用

SpringBoot(2) 内置Tomcat API的使用

作者: ggr | 来源:发表于2018-09-26 22:33 被阅读0次

    模拟SpringBoot内部内置Tomcat的实现过程:

    • 项目初始化
      我们使用IDEA构建一个简单的web项目,然后在Pom中加入我们需要的jar依赖,包括Tomact 的,它是我们手动创建Tomcat的一个api
        <!--Java 语言操作tomcat -->
        <dependency>
          <groupId>org.apache.tomcat.embed</groupId>
          <artifactId>tomcat-embed-core</artifactId>
          <version>8.5.28</version>
        </dependency>
    
    • 写一个简单的Servlet
    package com.ggr.tomcat.test;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * 这是一个测试的Serlet
     */
    public class IndexServlet extends HttpServlet {
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.getWriter().write("hello! I am ggr this is my new friend");
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req,resp);
        }
    }
    
    
    • 在Main函数入口出创建Tomcat并注册这个Servlet然后启动
    package com.ggr.tomcat.test;
    
    
    import org.apache.catalina.LifecycleException;
    import org.apache.catalina.core.StandardContext;
    import org.apache.catalina.startup.Tomcat;
    
    /**
     * 使用Java语言创建Tomcat服务器<br>
     * Tomcat 底层执行程序 最终servlet<br>
     * SpringMVC底层使用servlet 包装<br>
     */
    public class Test001 {
    
        private static int PORT = 8080;
        private static String CONTEXT_PATH="/tomcat";
        private static String SERVLET_NAME = "indexServlet";
    
        public static void main(String[] args) throws LifecycleException {
    
            //创建tomcat服务器
            Tomcat tomcatServer = new Tomcat();
            //设置端口号
            tomcatServer.setPort(PORT);
            //是否自动部署
            tomcatServer.getHost().setAutoDeploy(false);
    
            //创建上下文
            StandardContext standardContext = new StandardContext();
            standardContext.setPath(CONTEXT_PATH);
            standardContext.addLifecycleListener(new Tomcat.FixContextListener());
    
            //将上下文加入到tomcat中去
            tomcatServer.getHost().addChild(standardContext);
    
            //创建Servlet
            tomcatServer.addServlet(CONTEXT_PATH,SERVLET_NAME,new IndexServlet());
            // servleturl映射
            standardContext.addServletMappingDecoded("/index", SERVLET_NAME);
            tomcatServer.start();
    
            System.out.println("tomcat服务器启动成功..");
            //异步接收请求
            tomcatServer.getServer().await();
        }
    }
    
    

    点击启动我们就可以看到我们创建的一个内置的Tomcat并且可以通过localhost:8080/index 访问我们定义好的Servelet

    这里之所以记录下来这个过程主要是为了说明,SpringBoot的底层实际上也是封装了这些子模块实现的,Controller的本质上还是一个Servlet,Spring框架为我们提供了更加灵活简单的配置和使用方式。

    相关文章

      网友评论

          本文标题:SpringBoot(2) 内置Tomcat API的使用

          本文链接:https://www.haomeiwen.com/subject/upwwnftx.html