Tomcat 嵌入式开发 (二) 嵌入式启动 Tomcat
简介
本文使用最新的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的入口。
- 所有servlet或者Tomcat相关的类都需要在Tomcat.class中注册
- 需要配置Tomcat的工作目录
- 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的各类请求
setPath:设置访问路径的前缀
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.执行u-boot程序 2.加载linux内核 3.挂载rootfs 4.加载完后 进入终端(命令输入行) UBOOT 1. ...
- 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远程 ...
- 配置tomcat虚拟目录后无法启动tomcat
配置tomcat虚拟目录后无法启动tomcat,报错Failed to start component [StandardServer[8005]] 问题只是因为这个虚拟目录对应的真实路径不存在
- 【嵌入式开发】嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11)
作者 : 万境绝尘 博客地址 : http://blog.csdn.net/shulianghan/article/details/42254237 一. 相关工具下载 嵌入式开发工具包 : -- 下 ...
- java项目如何启动tomcat服务器,Java web项目启动Tomcat报错解决方案
Java web项目启动Tomcat报错解决方案 点击运行项目时显示 A Java Exception has occurred. 'Starting Tomcat v9.0 Server at lo ...
- 嵌入式开发工具——嵌入式Qt连接mysql
文章目录 前言 一.编译Qt中自带的mysql源码 二.程序测试 前言 上一篇(嵌入式开发工具--交叉编译libmysql)已经完成了mysql的C API交叉编译的工作,今天将用它来编译生成Qt连接 ...
- c语言嵌入式开发单片机,嵌入式开发|单片机基础
嵌入式开发它是一个综合的技能学习,既要去学习基本的Linux编程,又要学习物理机的操作使用,要想学习嵌入式的开发,在前面的文章中已经是跟大家说过了,嵌入式开发的学习需要掌握的基础课程还是比较多的,单片 ...
- rust做嵌入式开发_Rust 嵌入式开发 STM32 amp; RISC-V
Rust 嵌入式开发 STM32 & RISC-V 发布于 2020-04-03 11:07:06 本帖最后由 wuhanstudio 于 2020-4-3 11:58 编辑 更新地址: [m ...
- tomcat 启动项目 页面文字乱码_eclipse启动tomcat项目乱码而终端启动tomcat正常的解决办法...
部署在eclipse上的web程序访问会出现乱码,只要是涉及到中文增删改,string转码都会出现乱码,eclipse上使用的是tomcat服务器,数据库是oracle.而 直接使用tomcat部署程 ...
最新文章
- 【linux】查看Linux操作系统版本、内核、CPU和内存信息
- hibernate学习笔记二
- ICLR 2022入选论文线上分享预告:一作解读,不容错过
- Task.Factory.StartNew 和 Task.Run 到底有什么区别?
- 自从我这样撸代码以后,公司网页的浏览量提高了107%!
- TEMU:动态分析组件
- android系统(63)---Jobscheduler运行机制详解
- U盘安装linux后无法引导
- TensorFlow on Windows: “Couldn't open CUDA library cudnn64_5.dll”
- python中文意思-请问在python中**是啥什么意思?
- mysql msdtc 不支持_如何解决服务器上的msdtc不可用问题
- QQ桌球瞄准器开发(4)透明度、颜色、线宽与母球大小
- c语言随机摇号程序,再谈电脑摇号之作弊
- 高考计算机会考等级划分标准,高中学业水平考试等级是怎么划分的
- SpringBoot的Cacheable缓存入门
- Oracle安装之1521端口及任何端口被占用错误
- 「AI白身境」一文览尽计算机视觉研究方向
- centos挂载光驱设备
- pandas的loc[ ]和iloc[ ]方法解析
- GB/T17544与GB/T25000.51比较
热门文章
- 小米5s+刷+android+8.0,小米:正加速为小米5s系列适配安卓8.0
- 精灵宝可梦需考虑季节因素
- 计算机数学考试分值分布,考研初试分值如何分布
- 华为数据分类管理框架
- hack the box靶场responder靶机
- 携手经典悦读 提升个人素养
- VSCode远程配置流程(详细图解)
- html中代码td是什么,html元素td标签的使用方法及作用
- 使用cv2进行图像融合
- 国防科技大学计算机学院在湖南吗,这几所湖南的高校不仅在省内,在全国都有较高的声誉...