Tomcat 和 Spring MVC

TomcatSpring MVC 是 Java Web 开发中两大核心组件,分别承担不同的角色:


一、Tomcat

  1. 定义

    • Apache Tomcat 是一个开源的 Servlet 容器 (也称为 Servlet 引擎)+ JSP 引擎,实现了 Java EE(现称 Jakarta EE)规范中与 Web 相关的部分。
  2. 主要功能

    • 监听 HTTP 请求(端口默认 8080),将请求交给对应的 Servlet 处理,最后把 Servlet 的响应(HTML、JSON、图片等)返回给客户端。

    • 支持 JSP(JavaServer Pages),可以把 JSP 文件编译成 Servlet 并执行。

  3. 在 Spring Boot 中的地位

    • spring-boot-starter-web 默认会引入嵌入式 Tomcat。你打包成 JAR 直接运行时,实际上是 Tomcat 在后台启动并提供 Web 服务。

二、Spring MVC

  1. 定义

    • Spring MVC(Model-View-Controller)是 Spring Framework 中的一个 Web 框架模块,基于经典的 MVC 设计模式,用来处理 Web 请求和响应。
  2. 核心组件

    组件 职责
    DispatcherServlet 作为前端控制器(Front Controller),接收所有 HTTP 请求并分发给具体的处理器(Controller)。
    HandlerMapping 根据请求 URL、HTTP 方法等规则,找到对应的 Controller 方法。
    Controller 你在代码中用 @Controller@RestController 注解的类,负责业务逻辑处理并返回 Model 或数据。
    ViewResolver 将 Controller 返回的视图名称(如 home)解析为具体的 JSP、Thymeleaf 模板等,并渲染页面。
    ModelAndView 用于在 Controller 中携带要渲染到页面的数据(Model)和视图名称(View)。
  3. 工作流程

    1. 浏览器发起请求 → 2. DispatcherServlet 拦截 → 3. 通过 HandlerMapping 找到 Controller →

    2. 执行 Controller 方法,返回数据或视图名 → 5. ViewResolver 渲染 → 6. 响应结果返回给浏览器。

  4. 与 Spring Boot 的结合

    • Spring Boot 自动帮你注册好 DispatcherServlet、默认的 ViewResolver(如 Thymeleaf)以及静态资源映射。

    • 你只需在启动类或配置类加上 @EnableWebMvc(可选),并编写带 @Controller/@RestController 的类和 @RequestMapping 方法,就能快速构建 Web 接口或页面。


小结

  • Tomcat 是运行你的 Web 应用的 服务器容器,负责接收和转发 HTTP 请求;

  • Spring MVC 是构建应用内部 请求--处理--响应 流程的 框架,让你以注解+POJO 的方式组织 Web 业务逻辑。

两者配合:Tomcat 负责网络层面的通信,Spring MVC 负责应用层面的请求调度与业务处理。

相关推荐
kali-Myon2 分钟前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀6 分钟前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
清水白石00815 分钟前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存
符哥200828 分钟前
C++ 进阶知识点整理
java·开发语言·jvm
Sayuanni%341 分钟前
初阶_多线程1(线程含义与关键属性)
java
程序媛徐师姐41 分钟前
Java基于微信小程序的模拟考试系统,附源码+文档说明
java·微信小程序·java模拟考试系统小程序·模拟考试微信小程序·模拟考试系统小程序·模拟考试小程序·java模拟考试小程序
疯狂敲代码的老刘1 小时前
JDK 1.6到25 全版本网盘合集 (Windows + Mac + Linux)
java·linux·windows·macos·jdk
夕除1 小时前
js--15
java·jvm·spring
曾经的三心草1 小时前
redis-9-集群
java·redis·mybatis
sun03221 小时前
【架构基础】Spring中的PropertySourcesPlaceholderConfigurer介绍 (并非新知识,比较古老的一种使用方式)
java·spring·架构