简介

本文使用最新的Tomcat9.0.29版本进行开发,也是借鉴了网上一些Tomcat8/7版本的嵌入式开发代码(资料好少,得自己慢慢踩坑)

下载Tomcat嵌入式开发jar包

打开Tomcat9下载网址https://tomcat.apache.org/download-90.cgi

图片中使用红框圈起来的就是Tomcat嵌入式开发所需要的基础jar,当然可以去Maven官网搜索相应jar并引入到Maven项目的pom.xml中

pom.xml

<properties><maven_version>9.0.29</maven_version></properties><dependencies><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>${maven_version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><version>${maven_version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId><version>${maven_version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-websocket</artifactId><version>${maven_version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency></dependencies>

Tomcat.class

这个类用于嵌入式开发程序,也就是说它是我们启动Tomcat的入口。

  1. 所有servlet或者Tomcat相关的类都需要在Tomcat.class中注册
  2. 需要配置Tomcat的工作目录
  3. Tomcat9可以不使用配置文件启动(比如web.xml),当然你同样可以选择使用配置文件启动Tomcat,这是可选择的

启动Tomcat

首先我们需要了解Tomcat启动所需的最基础配置,就像刚学java的时候一样,先System.out.println(“Hello World”); (滑稽)

Host

Host配置了Tomcat启动相关的主机参数,比如主机名(ip)、端口、热加载等等

Tomcat tomcat = new Tomcat();
tomcat.getHost()

​ 首先实例化一个Tomcat,然后直接获取Host,注意这里是可以直接获取且host !=null ,接下来看看getHost()方法的源码,我们可以看到,方法先获取Engine字段,如果engine.findChildren()返回值为空的话则实例化一个Host,并且设置name=“localhost”。

​ Host是一个interface,而它的实现类为StandardHost,该类中配备了一些默认的启动参数,有兴趣的可以点击该类的源码查看。


protected String hostname = "localhost";public Host getHost() {Engine engine = this.getEngine();if (engine.findChildren().length > 0) {return (Host)engine.findChildren()[0];} else {Host host = new StandardHost();host.setName(this.hostname);this.getEngine().addChild(host);return host;}}

接下来我们需要创建一个StandardContext,这个类实现了Context接口,Context接口主要处理Servlet的各类请求

  1. setPath:设置访问路径的前缀

  2. addLifecycleListener:添加一个监听器

    Tomcat.FixContextListener() 该监听器在不使用web.xml时为必须项

    Tomcat.DefaultWebXmlListener() 该监听器会获取一些已配置好的设置,适用于程序化配置

    Tomcat.ExistingStandardWrapper(Servlet existing) 该监听器使用自定义的Servlet,增强对Servlet的控制

紧接着我们把context添加到host中

StandardContext context = new StandardContext();
context.setPath("/test");
context.addLifecycleListener(new Tomcat.FixContextListener());
tomcat.getHost().addChild(context);

更多文章详情请移步http://blog.seasedge.cn/archives/52.html

码字不易~请多多支持 *_*

Tomcat 嵌入式开发 (二) 嵌入式启动 Tomcat相关推荐

  1. 驱动开发基础知识必修-(一)嵌入式开发板的启动过程

    驱动开发必修-嵌入式开发板的启动过程 简介 从打印日志入手 熟悉启动过程 1.执行u-boot程序 2.加载linux内核 3.挂载rootfs 4.加载完后 进入终端(命令输入行) UBOOT 1. ...

  2. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远程 ...

  3. 配置tomcat虚拟目录后无法启动tomcat

    配置tomcat虚拟目录后无法启动tomcat,报错Failed to start component [StandardServer[8005]] 问题只是因为这个虚拟目录对应的真实路径不存在

  4. 【嵌入式开发】嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11)

    作者 : 万境绝尘 博客地址 : http://blog.csdn.net/shulianghan/article/details/42254237 一. 相关工具下载 嵌入式开发工具包 : -- 下 ...

  5. java项目如何启动tomcat服务器,Java web项目启动Tomcat报错解决方案

    Java web项目启动Tomcat报错解决方案 点击运行项目时显示 A Java Exception has occurred. 'Starting Tomcat v9.0 Server at lo ...

  6. 嵌入式开发工具——嵌入式Qt连接mysql

    文章目录 前言 一.编译Qt中自带的mysql源码 二.程序测试 前言 上一篇(嵌入式开发工具--交叉编译libmysql)已经完成了mysql的C API交叉编译的工作,今天将用它来编译生成Qt连接 ...

  7. c语言嵌入式开发单片机,嵌入式开发|单片机基础

    嵌入式开发它是一个综合的技能学习,既要去学习基本的Linux编程,又要学习物理机的操作使用,要想学习嵌入式的开发,在前面的文章中已经是跟大家说过了,嵌入式开发的学习需要掌握的基础课程还是比较多的,单片 ...

  8. rust做嵌入式开发_Rust 嵌入式开发 STM32 amp; RISC-V

    Rust 嵌入式开发 STM32 & RISC-V 发布于 2020-04-03 11:07:06 本帖最后由 wuhanstudio 于 2020-4-3 11:58 编辑 更新地址: [m ...

  9. tomcat 启动项目 页面文字乱码_eclipse启动tomcat项目乱码而终端启动tomcat正常的解决办法...

    部署在eclipse上的web程序访问会出现乱码,只要是涉及到中文增删改,string转码都会出现乱码,eclipse上使用的是tomcat服务器,数据库是oracle.而 直接使用tomcat部署程 ...

最新文章

  1. 【linux】查看Linux操作系统版本、内核、CPU和内存信息
  2. hibernate学习笔记二
  3. ICLR 2022入选论文线上分享预告:一作解读,不容错过
  4. Task.Factory.StartNew 和 Task.Run 到底有什么区别?
  5. 自从我这样撸代码以后,公司网页的浏览量提高了107%!
  6. TEMU:动态分析组件
  7. android系统(63)---Jobscheduler运行机制详解
  8. U盘安装linux后无法引导
  9. TensorFlow on Windows: “Couldn't open CUDA library cudnn64_5.dll”
  10. python中文意思-请问在python中**是啥什么意思?
  11. mysql msdtc 不支持_如何解决服务器上的msdtc不可用问题
  12. QQ桌球瞄准器开发(4)透明度、颜色、线宽与母球大小
  13. c语言随机摇号程序,再谈电脑摇号之作弊
  14. 高考计算机会考等级划分标准,高中学业水平考试等级是怎么划分的
  15. SpringBoot的Cacheable缓存入门
  16. Oracle安装之1521端口及任何端口被占用错误
  17. 「AI白身境」一文览尽计算机视觉研究方向
  18. centos挂载光驱设备
  19. pandas的loc[ ]和iloc[ ]方法解析
  20. GB/T17544与GB/T25000.51比较

热门文章

  1. 小米5s+刷+android+8.0,小米:正加速为小米5s系列适配安卓8.0
  2. 精灵宝可梦需考虑季节因素
  3. 计算机数学考试分值分布,考研初试分值如何分布
  4. 华为数据分类管理框架
  5. hack the box靶场responder靶机
  6. 携手经典悦读 提升个人素养
  7. VSCode远程配置流程(详细图解)
  8. html中代码td是什么,html元素td标签的使用方法及作用
  9. 使用cv2进行图像融合
  10. 国防科技大学计算机学院在湖南吗,这几所湖南的高校不仅在省内,在全国都有较高的声誉...