Tomcat 和 Spring MVC

Tomcat 和 Spring 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 负责应用层面的请求调度与业务处理。

相关推荐
代码方舟几秒前
零信任架构实战:基于天远人企关联构建自动化供应链核心企业关联穿透与利益冲突审查网关
java·人工智能·架构·自动化
行者-全栈开发21 分钟前
【Java中间件】CVE-2026-34486:Tomcat EncryptInterceptor 补丁绕过修复指南
tomcat·cve-2026-34486·encryptintercep·会话复制·集群安全·补丁绕过·cwe-311
liyi_hz200840 分钟前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
骑着蜗牛撵大象32743 分钟前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
Brilliantwxx1 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
鬼手点金1 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
摇滚侠1 小时前
《On Java 中文版 基础卷》阅读笔记 初始化和清理 08
java·开发语言·笔记
海鸥-w2 小时前
Redis 配置与排错说明
java·数据库·redis·bootstrap
XiYang-DING2 小时前
P4009.和为K的子数组个数 & P5522.异或和为 k 的子数组个数
java·开发语言
TinyKey2 小时前
malloc_debug_notes
java