美文网首页
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