[SpringBoot]手写一个内嵌tomcat

3 篇文章 0 订阅
3 篇文章 0 订阅

SpringBoot相对于SpringMvc,除了我们常讲到的“零配置”,其实还有一个特点就是集成了内嵌的tomcat,这就使得我们不再需要去每台虚拟机上面安装一个tomcat。

工程结构

在这里插入图片描述
整体比较简单,使用idea创建一个maven工程,包结构如图所示。

pom.xml

此处引入的依赖其实最主要的就是tomcat的jar包:

<dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-core</artifactId>
      <version>9.0.33</version>
</dependency>

编码

IndexServlet

写一个名为IndexServlet的类,继承自HttpServlet并重写其中的doGet方法,这里仅在控制台打印一串文字:

package com.young.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class IndexServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello++++++++++++++++++++++");
    }
}

MainTest

一般SpringBoot都有一个入口方法,都是在main方法中运行,此处写一个名为MainTest的类:

package com.young.app;

import com.young.web.IndexServlet;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;

public class MainTest {
    public static void main(String[] args) throws LifecycleException {
        Tomcat tomcat = new Tomcat();
        //分配端口需要使用Connector对象
        Connector connector = new Connector();
        connector.setPort(8888);
        connector.setURIEncoding("UTF-8");
        tomcat.getService().addConnector(connector);

        IndexServlet indexServlet = new IndexServlet();
        Context context = tomcat.addContext("/project",null);
        tomcat.addServlet(context,"servlet",indexServlet);
        context.addServletMappingDecoded("/index.do", "servlet");

        tomcat.start();
        //使tomcat处于阻塞状态
        tomcat.getServer().await();
    }
}

其中IndexServlet注册到tomcat中一般有三种方式:
(1)使用web.xml:url-mapping标签进行绑定;
(2)在类IndexServlet上面添加注解WebSevlet
(3)调用tomcat的API进行注册。

效果

浏览器输入访问地址:127.0.0.1:8888/project/index.do
在这里插入图片描述
成功打印:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值