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

javaWeb02-Tomcat

一、Tomcat与spring、springboot项目的关系 

Spring Boot项目默认集成了内嵌的 Tomcat 服务器:

  • Spring Boot 提供了内嵌式 Servlet 容器,默认使用 Tomcat

  • 启动类的 main() 方法运行时,Tomcat 就会随应用一起启动,监听端口(默认 8080)。

  • 不需要单独安装或部署到外部 Tomcat,直接打包为 jar 文件就能运行。

如果你用的是传统 Spring Framework + Web 项目结构(如 web.xml): 

不会默认集成 Tomcat,需要自己部署到外部 Tomcat 容器中。

  • 你通常会将 Spring 项目打成 war 包。

  • 然后将这个 war 放进本地安装的 Tomcat 的 webapps 目录里运行。

  • Spring 自身并不提供内嵌的 Tomcat,这点和 Spring Boot 是本质区别。

项目类型是否默认集成 Tomcat部署方式
Spring Boot✅ 是(默认内嵌)java -jar 运行 jar 文件即可
Spring Framework(传统)❌ 否手动部署 war 到 Tomcat

二、tomcat常用版本

场景推荐版本
传统 Spring 或 Spring Boot 2.x 项目Tomcat 9.x
新项目,使用 Spring Boot 3.x / Spring 6.x,支持 Jakarta EETomcat 10.x
老旧系统维护可保留 Tomcat 8.5(不推荐新项目)

三、tomcat基本使用

打开浏览器访问:http://localhost:8080

四、tomcat的基本配置

 

五、创建maven web项目

5-1、使用idea创建maven web项目(使用骨架)

选择的骨架如下:

【注意】:

只有当idea BUILD SUCCESS,才会出现webapp文件夹!

此处的文件夹目录结构:

少了Java文件夹和resources资源文件夹,需要手动创建。

其实在创建的时候,idea会有提示:

完整目录结构如下:

.
├── pom.xml
└── src└── main├── java├── resources└── webapp├── WEB-INF│   └── web.xml└── index.jsp

 此时pom.xml文件中有较多的插件信息,可以都删除,删除的干净版本可以是这样:

【注意】:

此方式对maven的版本有要求,要是使用的idea版本较低,里面默认的maven版本也比较低,创建的maven web项目会不成功。

此时,可以使用直接新建maven项目,然后手动添加对应的文件夹,使其成为web项目。要记得手动在pom.xml文件中加上:

<packaging>war</packaging>

5-2、WEB-INF 文件夹

WEB-INF 是 Java Web 项目中特殊的目录,只有服务器可以访问,浏览器访问不到

为什么 WEB-INF 是“受保护的”?

Tomcat 会自动屏蔽对 WEB-INF/ 的外部访问,这种机制用于保护敏感文件,如:

  • 配置文件(web.xml)

  • 后台页面(admin.jsp)

  • 控制类(Servlet)

  • 第三方依赖包(lib)

WEB-INF 中不能放什么?

不推荐放的内容原因说明
JSP 页面(若需用户直接访问)浏览器访问不到,除非作为 include 或 forward 使用
图片、CSS、JS 文件因为无法被浏览器直接加载
外部可见资源(xxx.html)例如首页、公开页面应放在 WEB-INF 外面

5-3、idea集成tomcat:pom.xml添加tomcat插件

插件版本必须对应 Tomcat 版本!!!

如果你不确定使用哪个插件版本,可以统一使用 tomcat7-maven-plugin 来跑本地开发:

<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/springWeb</path></configuration>
</plugin>

http://www.lryc.cn/news/579008.html

相关文章:

  • 面试150 矩阵置0
  • SPI、I2C和UART三种串行通信协议的--------简单总结
  • 飞算 JavaAI 智控引擎:全链路开发自动化新图景
  • 分布式定时任务:xxl-job
  • 滤波电路Multisim电路仿真实验汇总——硬件工程师笔记
  • 【网工|知识升华版|实验】2 ACL原理及应用
  • 力扣 hot100 Day32
  • Spring AI 源码
  • 用自定义注解解决excel动态表头导出的问题
  • 【全网唯一】自动化编辑器 Windows版纯本地离线文字识别插件
  • 少样本学习在计算机视觉中的应用:原理、挑战与最新突破
  • 分布式事务理论基础及常见解决方案
  • 【科研绘图系列】基于R语言的种质资源评分可视化教程:条形图与地理分布图
  • Redis搭建集群模式
  • 桥岛隧大型工程 3D 可视化监测平台
  • Objective-C 路由表原理详解
  • Git 怎么判断是否冲突?
  • 开源 Python 库---Diffusers 库的安装及运用(自留)
  • Python学习之——单例模式
  • 智慧赋能高压并网:分布式光伏监控系统在5.88MW物流园项目的实践解析
  • PHP Yii2 安装SQL Server扩展-MAC M4 Pro芯片
  • 【AI论文】SPIRAL:零和博弈中的自对弈通过多智能体多轮强化学习激励推理能力
  • 场外交易(OTC)财富管理系统开发及解决方案报告
  • 【Part 3 Unity VR眼镜端播放器开发与优化】第四节|高分辨率VR全景视频播放性能优化
  • 腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE MySQL版)
  • 电子电气架构 --- SOVD功能简单介绍
  • 二、jenkins之idea提交项目到gitlab、jenkins获取项目
  • 【NLP第二期中文分词技术:规则、统计与混合方法全解】
  • 设计模式精讲 Day 23:访问者模式(Visitor Pattern)
  • uniapp实现图片预览,懒加载