当我们开始接触到SpringBoot项目的时候,我们特别惊讶,为什么没有了tomcat服务器,web项目还能跑起来。为什么只用了一个main方法就能讲一个web项目跑起来。学习了这篇文章你就能明白了。

1.发现内置Tomcat

打开一个SpringBoot项目,我们发现,有tomcat的依赖

接下来让我们把tomcat的依赖找到

首先找到spring-boot-starter-web

点进去之后我们看到他用的是2.1.0版本,我们继续点击去

果然在里面找到tomcat的依赖,我们继续点进去

这是我们我们就能看到tomcat的相关依赖了。

因此我们是可以使用Java提供内置Tomcat容器框架,使用Java语言操作Tomcat容器。这样我们也能创建一个maven项目,并且内置一个tomcat容器了。

2.创建一个maven项目

3.添加tomcat依赖

这里我们使用8.5版本的tomcat

<!--Java语言操作tomcat -->
<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>8.5.16</version>
</dependency>

4.创建一个servlet:IndexServlet

public class IndexServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().print("IndexServletIndexServletIndexServletIndexServletIndexServletIndexServlet");}
}

我们先看看传统的Servlet需要怎么配置,我们需要在WEB-INF目录下的web.xml文件中,配置sevlet的映射

当我们访问这个servlet的时候,访问地址应该是:ip:<端口>/<tomcat上下文>/index

但是,但是,但是tomcat和web.xml没了,怎么配置?简单,没有我们就用main方法来创建一个tomcat。

5.创建一个tomcat

5.1.定义servlet配置参数

我们先定义几个servlet的配置参数:servlet的名字,servlet的映射

5.2.内置Tomcat常用API介绍

org.apache.catalina.startup.Tomcat

创建tomcat

Tomcat tomcatServer = new Tomcat();

设置tomcat端口

void setPort(int port);

设置上下文地址

void setPath(String path)

添加监听

void addLifecycleListener(LifecycleListener listener)

添加sevlet

Wrapper addServlet(String contextPath,String servletName,Servlet servlet)

添加sevlet映射

void addServletMappingDecoded(String pattern, String name)

启动tomcat

void start() throws LifecycleException

获取服务

Server getServer()

服务异步

tomcatServer.getServer().await()

将Web应用程序添加到Tomcat的webapps目录中,等效的默认web.xml将应用于该Web应用程序,并且与该应用程序打包的任何WEB-INF/web.xmlMETA-INF/context.xml都将被正常处理。

Context addWebapp(String contextPath, String docBase) throws ServletException

web应用资源添加到此Web应用程序

void addPreResources(WebResourceSet webResourceSet)

5.3.创建tomcat并且添加servlet

public class TestTomcat {private static int PORT = 8080;private static String CONTEX_PATH = "/demosevlet";private static String SERVLET_NAME = "index";private static String MAPPING = "index";public static void main(String[] args) throws LifecycleException, InterruptedException {System.out.println("开始启动tomcat");Tomcat tomcatServer = new Tomcat();//设置tomcat端口tomcatServer.setPort(PORT);//此tomcat端口是否自动部署tomcatServer.getHost().setAutoDeploy(false);//创建一个web应用程序StandardContext standardContex = new StandardContext();//设置web应用程序的上下文地址standardContex.setPath(CONTEX_PATH);//添加web应用程序的监听standardContex.addLifecycleListener(new FixContextListener());//将web应用程序添加到服务器中tomcatServer.getHost().addChild(standardContex);//配置servelt和映射tomcatServer.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());standardContex.addServletMappingDecoded("/"+MAPPING, SERVLET_NAME);//启动tomcattomcatServer.start();System.out.println("启动tomcat完毕");//开启异步服务,接收请求tomcatServer.getServer().await();}
}

5.4.启动main方法创建tomcat

启动结果如下,我们看到tomcat以8080端口启动。另外,关注Java知音公众号,回复“后端面试”,送你一份面试题宝典!

并且在此目录下生成了tomcat.8080文件夹

5.5.访问IndexServlet

请求地址:ip:<端口>/<tomcat上下文>/index

请求地址:127.0.0.1:8080/demosevlet/index

(感谢阅读,希望对你所有帮助)

来源:blog.csdn.net/m0_37892044/article/details/107963187

推荐好文

>>【练手项目】基于SpringBoot的ERP系统,自带进销存+财务+生产功能>>分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
>>能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮!

教你用Java的方式创建一个自己的Tomcat容器相关推荐

  1. 怎么用java编程_如何使用java编程方式创建一个odt文件?

    看看 ODFDOM – the OpenDocument API ODFDOM is a free OpenDocument Format (ODF) library. Its purpose is ...

  2. 动态生成word文档原来如此简单!Aspose.Words助力以Java编程方式创建丰富的Word文档

    近年来,Word文档的动态生成已成为组成报告,报价,发票和其他类型文档的流行功能.各种制造公司都基于数据库中存储的数据生成发票.在这种情况下,文档自动化可以节省手动文档创建过程中所需的时间,精力和资源 ...

  3. java 新建菜单选项_请完成下列Java程序:创建一个下拉式菜单,菜单项包括3个CheckboxM..._考试资料网...

    请完成下列Java程序:创建一个下拉式菜单,菜单项包括3个CheckboxMenultem(复选框),一条分割线和一个Exit项.要求打开或关闭复选框时,确定是哪个被切换,是开还是关,并输出它的状态: ...

  4. Java中如何创建一个文件或者文件夹

    Java中如何创建一个文件或者文件夹 创建一个文件夹: 调用Java中File类中的mkdir( )或者mkdirs( )方法 boolean  makdir( ):创建一个文件夹,创建成功返回tru ...

  5. java语言:创建一个二维数组,将古诗《春晓》的内容赋值于二维数组,然后分别用横版和竖版两种方式输出。

    问题:创建一个二维数组,将古诗<春晓>的内容赋值于二维数组,然后分别用横版和竖版两种方式输出. 前两天上java课的时候老师,给我们出了这道题.要求:要用java语言来写. 根据要求创建的 ...

  6. java media player_MediaPlayerForJava(创建一个视频播放器)

    利用VLC自制一个java视频播放器 1.下载相关文件 1.1 下载vlc播放器 1.1.1 必须匹配Java 虚拟机的CPU体系结构和本机LibVLC库 - 如果使用32位JVM,则必须使用32位版 ...

  7. Spring MVC:使用基于Java的配置创建一个简单的Controller

    这是我博客上与Spring MVC相关的第一篇文章. 开端总是令人兴奋的,因此我将尽量简洁明了. Spring MVC允许以最方便,直接和快速的方式创建Web应用程序. 开始使用这项技术意味着需要Sp ...

  8. 《JAVA》编程创建一个Box类(长方体),在Box类中定义三个变量

    问题:编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w ...

  9. truck 用法java_编写Java程序,创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck)。...

    返回本章节 返回作业目录 需求说明: 创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck). 父类有属性品牌(brand)和颜色(color). 在父 ...

最新文章

  1. java快排算法解读,java 快排的思路与算法
  2. 祝我亲爱的天蝎GG生日快乐!+相识3周年小纪念
  3. 你中招了吗?混不好大学的人,都有这4种表现
  4. 【转载】Python3 sorted函数中key参数的作用原理
  5. UVa 1632 阿里巴巴(区间DP)
  6. matlab摄像头录像保存在哪里,matlab连接摄像头读取视频部分解释
  7. winform窗体模板_如何验证角模板驱动的窗体
  8. 2021-07-05-日历
  9. 一些比较隐秘的OJ的网址
  10. Proteus安装图文教程
  11. plc编程技术发展历程
  12. 微信小程序UI组件库合集
  13. 机械制图计算机识图,机械制图基础知识
  14. 一款网页游戏外挂开发-数据抓包
  15. oracle dba 培训教程 第15章 管理角色
  16. iOS 审核总被拒?如何提升 iOS 审核通过率!
  17. OTA前装搭载率逼近50%,哪些供应商正在领跑细分赛道
  18. CentOS Stream 8 安装Oracle 19C (静默模式)
  19. 以太坊开发中ethers库的使用
  20. sql assistant mysql_SQL Assistant

热门文章

  1. 大佬谈:英伟达、咪咕、赛迪共谈技术如何颠覆未来市场
  2. 红米K20 Pro拍照样张出炉:后置4800万像素高清三摄
  3. Openwrt 串口密码登入【ZT】
  4. linux kernel 下的hash 和链表 应用
  5. 【算法】剑指 Offer 17. 打印从1到最大的n位数
  6. 【算法】剑指 Offer 25. 合并两个排序的链表
  7. 【Flink】Unauthorized request to start container. This token is expired. current time is
  8. 【kafka】Kafka消息压缩与解压与相关实验
  9. 【Elasticsearch】 海量 分词器 在线地址 与文档
  10. 【Redis】Redis 基础知识 常用命令 命令积累