专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  秒懂双亲委派机制! ·  昨天  
芋道源码  ·  现在刚入行的 Java ... ·  昨天  
Java编程精选  ·  减少 try catch ,可以这样干! ·  3 天前  
芋道源码  ·  美团一面:为什么 MySQL 不推荐使用 ... ·  2 天前  
51好读  ›  专栏  ›  芋道源码

现在刚入行的 Java 开发者已经不知道Tomcat了

芋道源码  · 公众号  · Java  · 2025-01-07 20:24

主要观点总结

文章主要介绍了Java开发者对于开源项目、Spring Boot和Tomcat的使用和认知。包括一个开源项目的介绍,Java Web技术的发展历程,Spring Boot和Tomcat的优势以及如何在Spring Boot项目中使用不同的Web服务器。

关键观点总结

关键观点1: Java Web技术的发展和变革

文章回顾了Java Web技术从Servlet和JSP开始,到Spring框架,再到如今流行的Spring Boot的演变过程,每次变革都带来了开发效率的提升。

关键观点2: Spring Boot与Tomcat的关系

文章详细解释了Spring Boot与Tomcat的关系,说明了Spring Boot默认使用Tomcat作为Servlet容器和Web服务器,并介绍了如何在Spring Boot项目中使用不同的Web服务器,如Jetty。

关键观点3: Tomcat的核心功能

文章介绍了Tomcat作为Java Servlet容器和Web服务器的核心功能,包括Servlet容器、Web服务器和JSP引擎。

关键观点4: Spring Boot的自动配置优势

文章强调了Spring Boot的自动配置理念,通过自动配置大幅减少了开发者的工作量,使开发者能够更专注于编写业务代码。

关键观点5: 文章的价值和加入方式

文章提供了有价值的技术知识和经验分享,并介绍了加入作者知识星球的方式,获取更多技术内容和资源。


正文

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:古时的风筝


前几天有个弟弟不知道从哪儿搞来一个开源项目,正好满足他的需求。但是项目用的是 Spring ,而不是 Spring Boot。

然后问我说项目不知道咋启动,当然,我只告诉他装个Tomcat 配置上就行了。他甚至从来没碰过Tomcat,只是听过,连 Tomcat 都没下载过。具体没有告诉他,而是让他自己去查了。因为我也好几年没碰过纯 Spring Framework了,一直都是用 Spring Boot。

想想也是,自从用了 Spring Boot 后,确实就不关心 Tomcat 了。Spring Boot 项目一创建,直接哐哐写代码,然后一点按钮就运行,一点按钮就调试。等到部署的时候,都有自动部署流程,直接 Jenkins 一键部署了。从头到尾也接触不到 Tomcat,或者说没有直接接触 Tomcat。

因为Spring Boot 默认就是使用 Tomcat 作为Servlet 容器和 Web 服务器。它就是在 spring-boot-starter-web 这个包里被引入的。

所以说,有很多刚刚入行 Java 的或者入行2、3年的同学根本就没了解过 Tomcat 是啥。

Java Web 从最初的Servlet和JSP,到Spring框架的兴起,再到如今大行其道的Spring Boot,每一次变革都带来了开发效率的提升。但在提高效率的同时,很多底层的技术也被封装得严严实实的。

Tomcat

Apache Tomcat是一个开源的Java Servlet容器和Web服务器。它实现了Java Servlet、JavaServer Pages (JSP)、Java Expression Language和Java WebSocket技术的规范。目前 Tomcat 11 beta 版已经发布了。

Tomcat有下面几个核心功能

Servlet容器 :Tomcat为Servlet提供运行环境,处理Servlet的生命周期。Web服务器 :能够处理HTTP请求,提供静态资源。JSP引擎 :将JSP编译成Servlet并执行。

如果不用 Spring ,也不用 Spring Boot ,就用老手艺 Servlet 的话,创建一个可以跑起来的项目很简单。相信很多人都没这么做过,我也也是刚学Java 的时候用过一点点,后来就用 Spring 了。1、创建一个Servlet

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().println("Hello, Tomcat!");
    }
}

2、配置 web.xml

<web-app>
    <servlet>
        <servlet-name>HelloServletservlet-name>
        <servlet-class>com.example.HelloServletservlet-class>
    servlet>
    <servlet-mapping>
        <servlet-name>HelloServletservlet-name>
        <url-pattern>/hellourl-pattern>
    servlet-mapping>
web-app>

后来 Spring 框架就出来了,Spring 一来,基本上所有的 Java Web 全都使用它了。

用 Spring 就方便多了,很多细节都不用关心了,配置配置XML文件就行了。但是你想要把项目跑起来,还是要自己安装 Tomcat 的。用 Spring 的话呢,还要考虑是构建 Jar 包,还是 War 包。

说到这儿,还有很多同学根本就没见过 War 包。

再后来 Spring Boot就出现了,彻底让 Java Web开发进入了一个新时代。它的设计理念是"约定优于配置",通过自动配置大幅减少了开发者的工作量。

作为一个开发者,创建完一个 Spring Boot 项目后,接下来就是安心写代码了,什么 Jar 包、War 包,什么 Tomcat 通通都不用关心了。

虽然不用关心甚至有的同学根本就不知道 Tomcat,但是其实我们每天都在用它,因因为它是 Spring Boot 默认内嵌的。

Spring Boot会自动配置Tomcat,无需开发者手动设置。我们只管写代码,运行调试就行了。

实际上在 Spring Boot 中,也可以启用 Tomcat 之外的 Java Web 服务,比如 Jetty或Undertow。

比如要使用 Jetty 作为内嵌 Web 服务。

首先先要把默认引入的 Tomcat 排除掉。

<dependency>
 <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-webartifactId>
 <exclusions>
  <exclusion>
   <groupId>org.springframework.bootgroupId>
   <artifactId>spring-boot-starter-tomcatartifactId>
  exclusion>
 exclusions>
dependency>

然后将 Jetty 引入就可以了。

<dependency>
 <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-jettyartifactId>
dependency>
```title: 现在刚入行的 Java 开发者已经不知道Tomcat了
date: 2024-12-04
tags:
categories: 精进
permalink: Fight/xianzaigangruxingde-Java-kaifazheyijingbuzhidaoTomcatle
author: 风筝
from_url: 古时的风筝
wechat_url:

-------

摘要: 原创出处 古时的风筝 「风筝」欢迎转载,保留摘要,谢谢!


-------

![](https://static.iocoder.cn/images/common/wechat_mp_2017_07_31.jpg?watermark/2/text/5YWs5LyX5Y-377ya6IqL6YGT5rqQ56CB/font/5a6L5L2T/fontsize/400/fill/cmVk)

> 🙂🙂🙂关注**微信公众号:【芋道源码】** 有福利:
> 1. RocketMQ / MyCAT / Sharding-JDBC **所有** 源码分析文章列表
> 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址**
> 3. 您对于源码的疑问每条留言**都** 将得到**认真** 回复。**甚至不知道如何读源码也可以请教噢** 。
> 4. **新的** 源码解析文章**实时** 收到通知。**每周更新一篇左右** 。
> 5. **认真的** 源码交流微信群。

-------

前几天有个弟弟不知道从哪儿搞来一个开源项目,正好满足他的需求。但是项目用的是 Spring ,而不是 Spring Boot。

然后问我说项目不知道咋启动,当然,我只告诉他装个Tomcat 配置上就行了。他甚至从来没碰过Tomcat,只是听过,连 Tomcat 都没下载过。具体没有告诉他,而是让他自己去查了。因为我也好几年没碰过纯 Spring Framework了,一直都是用 Spring Boot。

想想也是,自从用了 Spring Boot 后,确实就不关心 Tomcat 了。Spring Boot 项目一创建,直接哐哐写代码,然后一点按钮就运行,一点按钮就调试。等到部署的时候,都有自动部署流程,直接 Jenkins 一键部署了。从头到尾也接触不到 Tomcat,或者说没有直接接触 Tomcat。

因为Spring Boot 默认就是使用 Tomcat 作为Servlet 容器和 Web 服务器。它就是在 `spring-boot-starter-web` 这个包里被引入的。

所以说,有很多刚刚入行 Java 的或者入行2、3年的同学根本就没了解过 Tomcat 是啥。

Java Web 从最初的Servlet和JSP,到Spring框架的兴起,再到如今大行其道的Spring Boot,每一次变革都带来了开发效率的提升。但在提高效率的同时,很多底层的技术也被封装得严严实实的。

#### [**Tomcat**](https://mp.weixin.qq.com/s/HNNA9lr7eWsmMfw23PwGIQ)

Apache Tomcat是一个开源的Java Servlet容器和Web服务器。它实现了Java Servlet、JavaServer Pages (JSP)、Java Expression Language和Java WebSocket技术的规范。目前 Tomcat 11 beta 版已经发布了。

![](https://mmbiz.qpic.cn/sz_mmbiz_png/iaWSDo4TfyZjAN3UuHG3gQB5aEWdBonQSzMP8pjiaslo9xEfjzgGPY17ibRb9M5GoIeZRghUKfFGNwPe0vKDq5Clg/640?wx_fmt=png&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

Tomcat有下面几个核心功能

**Servlet容器** :Tomcat为Servlet提供运行环境,处理Servlet的生命周期。**Web服务器** :能够处理HTTP请求,提供静态资源。**JSP引擎** :将JSP编译成Servlet并执行。

如果不用 Spring ,也不用 Spring Boot ,就用老手艺 Servlet 的话,创建一个可以跑起来的项目很简单。相信很多人都没这么做过,我也也是刚学Java 的时候用过一点点,后来就用 Spring 了。1、创建一个Servlet

@WebServlet("/hello") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Hello, Tomcat!"); } }


2、配置 web.xml

```XML

    
        HelloServlet
        com.example.HelloServlet
    

    
        HelloServlet
        /hello
    


后来 Spring 框架就出来了,Spring 一来,基本上所有的 Java Web 全都使用它了。

用 Spring 就方便多了,很多细节都不用关心了,配置配置XML文件就行了。但是你想要把项目跑起来,还是要自己安装 Tomcat 的。用 Spring 的话呢,还要考虑是构建 Jar 包,还是 War 包。

说到这儿,还有很多同学根本就没见过 War 包。

再后来 Spring Boot就出现了,彻底让 Java Web开发进入了一个新时代。它的设计理念是"约定优于配置",通过自动配置大幅减少了开发者的工作量。

作为一个开发者,创建完一个 Spring Boot 项目后,接下来就是安心写代码了,什么 Jar 包、War 包,什么 Tomcat 通通都不用关心了。

虽然不用关心甚至有的同学根本就不知道 Tomcat,但是其实我们每天都在用它,因因为它是 Spring Boot 默认内嵌的。

Spring Boot会自动配置Tomcat,无需开发者手动设置。我们只管写代码,运行调试就行了。

实际上在 Spring Boot 中,也可以启用 Tomcat 之外的 Java Web 服务,比如 Jetty或Undertow。

比如要使用 Jetty 作为内嵌 Web 服务。

首先先要把默认引入的 Tomcat 排除掉。

<dependency>
 <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-webartifactId>
 <exclusions>
  <exclusion>
   <groupId>org.springframework.bootgroupId>
   <artifactId>spring-boot-starter-tomcatartifactId>
  exclusion>
 exclusions>
dependency>

然后将 Jetty 引入就可以了。

<dependency>
 <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-jettyartifactId>
dependency>

欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)