模拟Springboot二:内置tomcat
2019-01-03 09:56:48来源:博客园 阅读 ()
既然要将tomcat内置到项目中,并且能够成功的启动项目就要知道 tomcat 做了哪些事情 ,那么就必须先搞明白
一个 普通的web项目是如何被我们本地配置的tomcat启动并运行的
(1)、 先告诉tomcat 要运行哪些项目 (也就是在使用eclipse、idea启动项目前对tomcat的配置工作、或linux上将编译后的war包拷贝到webapp下)
从而在 后面在启动tomcat时,tomcat就会加载编译后的.class项目
(2)、 tomcat在加载编译后的项目时也会加载 web.xml或上篇博客的WebApplication文件 ,而在这个文件中
做的事情就是 加载spring进而加载springMVC
加载SpringMVC: 将springMVC的DispatcherServlet注册到ServletContext容器
那么只需要在项目内部集成tomcat时,运行main方法启动tomcat之前将编译后的项目和tomcat相关联,然后tomcat就能自动加载WebApplication类了
1、添加tomcat maven 依赖 (通过代码来创建tomcat实例)
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>8.5.5</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <version>8.5.5</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>8.5.5</version> </dependency>
2、创建SpringMain(作用:运行main启动tomcat)、StartTomcat(作用:创建Tom实例,然后让tomcat加载编译后的项
(1)StartTomcat做的事情 创建线程类, springboot启动tomcat的源码也是这样的,这里只是写了必要的步骤
public class StartTomcat implements Runnable { @Override public void run() { //创建tomcat实例 Tomcat tom = new Tomcat(); //设置端口 tom.setPort(8081); try{ //获取项目编译后的claess 路径 String path = StartTomcat.class.getResource("/").getPath(); //获取webapp 文件 String filePath = new File("src/main/webapp").getAbsolutePath(); //然后将webapp下的项目添加至tomcat的context容器(context对应一个运行的项目) Context context =tom.addWebapp("/项目名",filePath); //参数1:一般是项目名 对应请求url中的项目名
//webResourceRoot 用于加载 项目的class文件
WebResourceRoot webResource = new StandardRoot(context); webResource.addPreResources(new DirResourceSet(webResource,"/WEB-INF/classes",path,"/")); tom.start(); }catch (Exception e) { e.printStackTrace(); } //阻塞 ,等待前端连接 tom.getServer().await(); } }
A、 创建tomcat实例
B、 获取项目编译后的claess 路径
C、获取webapp 目录下的项目
D、然后将webapp下的项目添加至tomcat的context容器
E、启动tomcat
F、将tomcat的Server实例await 监听请求的到来
(2) SpringMain
public class SpringMain { public static void main(String[] args) { //启动 new StartTomcat().run(); } }
这里也可以自定义一个注解 ,启动标注了此注解了的main方法时 ,做new StartTomcat().run(); 的事情就可以了
(3)、运行main方法 ,就能启动tom服务了
下一篇 : springboot是如何访问 resources目录下的static、template等 静态资源的 (因为没了ssm项目中的webapp目录了)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java简介
下一篇:一个简单的文本编辑器
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
- nacos~配置中心功能~springboot的支持 2020-06-10
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash