[图片] 开头说两句 小刀博客: https://www.lixiang.red 小刀公众号: 程序员学习大本营 学习背景 上一波, 我们学习了 tomcat 中主要接口的方法及关系: https://www.lixiang.red/articles/2019/08/12/1565622240937.html 实际上源 ..

tomcat 学习 | 通过 tomcat 源码启动 web 项目

开头说两句

小刀博客: https://www.lixiang.red
小刀公众号: 程序员学习大本营

学习背景

上一波, 我们学习了 tomcat 中主要接口的方法及关系:
https://www.lixiang.red/articles/2019/08/12/1565622240937.html
实际上源码只通过看, 也差不多只能看到这个地步了, 后面就一直看的话, 就很容易乱, 有句话说: 实践出真知
今天我们就一起通过 tomcat 源码, 来启动我们日常的 web 应用, 在中间, 可以 debug , 可以更好的看到整个过程

准备 web 应用

可以在 https://start.spring.io/ 去快速生成一个 web 应用
image.png
然后生成项目, 可得到如下目录结构:
image.png
我们用 ide 打开, 去添加一个 controller , 并打成 war 包备用
image.png
然后把 war 包丢到 tomcat 的 webapp 目录下面

tomcat 的配置

导入 jar 包到 idea 中

ant 相关的配置可参考这篇文章
https://www.lixiang.red/articles/2019/08/04/1564907616303.html
执行 deploy 命令之后, 我们可以在 tomcat-build-libs 目录中看到拉下的 jar 包
image.png
然后把这些包导入到 idea 中
先打开工程设置面板
image.png
点击添加 jar 包的按钮
image.png
找到对应 tomcat-build-libs 目录, 全选下面的所有文件, 包括我们自己下载的 ant.jar , 最后点击 OK
image.png

修改 tomcat 本身一些配置

  1. 删掉 tomcat/webapps/examples 目录, 这里面都是一些示例, 在源码编译中会报错, 干扰我们的正常启动, 可以先删掉
  2. 修改 tomcat 的端口号 (可选) 在 tomcat/conf/server.xml 中进行修改, 就像我们平时部署应用一样
    image.png

启动 tomcat 并跟踪

以前我们有聊过, 在用 shell 脚本启动 tomcat 时, 是启动的 Bootstrap.java 这个类, 并且跟上了参数 start
image.png
所以, 我们需要 idea 的启动参数里面, 也要加上 start
image.png
打断点: 可以在我们前面讲的启动入口入, 也就是 main 函数处打断点做最开始的追踪
image.png
放过断点继续运行一会, 可以看到 spring 启动的界面
image.png
最后我们在浏览器中访问下我们写的 controller, 能看到相应的返回
image.png

最后说两句

经过前面的学习, 再看源码就信息量很大了, 不利于分析, 我们就要把源码运行起来, 然后通过 debug , 可一步一步的去调试和学习, 大家在学习过程中有什么问题可以随时和小刀说: best39697802

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2272 引用 • 7713 回帖 • 920 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    135 引用 • 515 回帖 • 2 关注
回帖   
请输入回帖内容...