当前位置: 首页 > news >正文

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

http://www.xdnf.cn/news/998623.html

相关文章:

  • SQL进阶之旅 Day 29:NoSQL结合使用策略
  • docker-自动启动java 包
  • 使用VSCode开发FastAPI指南
  • Python 实现 Web 请求与响应
  • VSCode - Trae 插件关闭弹出框代码补全
  • 【C++学习笔记】 std::atomic 拷贝构造错误解析
  • docker-compose容器单机编排
  • el-select+el-tree实现树形下拉选择
  • tabs页签嵌套表格,切换表格保存数据不变并回勾
  • CSS 外边距合并(Margin Collapsing)问题研究
  • Karate 与Playwright的比较和融合
  • spring boot项目整合mybatis实现多数据源的配置
  • RAG Food Project
  • GAN+ECA注意力机制实现图像超分辨率重建
  • ESP32-C3FH4X—低功耗、高集成度的 MCU 系统级芯片 (SoC)
  • 基于数据库实现配置管理和定时任务启停
  • 强化学习:策略梯度概念
  • word用endnote插入国标参考文献
  • 在 Flutter 项目中iOS 的 App 图标和 App 名称 的设置
  • 探索 Excel-to-JSON:高效数据转换的利器
  • Linux Alias 魔法:命令行效率提升秘籍
  • R语言缓释制剂QBD解决方案之四
  • RK3588 + Ubuntu24.04 部署 rknn 模型——不用[特殊字符]版全流程教程
  • 管家婆软件下载中心-管家婆软件辉煌安装包下载、应用程序、最新版软件
  • STL难记忆却常用的用法集合(持续更新中)
  • 自动驾驶系统研发系列—AI大模型驱动的智能座舱:从概念到落地的工程解析
  • MonkeyOCR: 基于结构-识别-关系三元组范式的文档解析
  • 客户端登录not foud的问题解决
  • PostgreSQL 用户名大小写处理规则
  • 黑龙江亿林网络启盛裸金属服务器评测:24 核 32G + 联通千兆共享,高负载业务的新利器