当前位置: 首页 > 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.lqws.cn/news/605197.html

相关文章:

  • 一些ubuntu命令记录(持续补充)
  • Harbor镜像仓库修改端口号密码
  • HarmonyOS 页面路由Router切换组件导航Navigation
  • 操作系统考试大题-处理机调度算法-详解-2
  • 【GHS】Green Hills软件MULTI-IDE的安装教程
  • 文心快码答用户问|Comate AI IDE专场
  • UniApp(vue3+vite)如何原生引入TailwindCSS(4)
  • 如何备份和恢复 Ubuntu 系统 ?
  • Electron 快速上手
  • AWS RDS Aurora全局数据库转区域数据库实战指南:无缝迁移零停机
  • 数学建模_插值
  • 银行回单ocr api集成解析-图像文字识别-文字识别技术
  • Linux--线程池
  • Node.js 使用 WebSockets 和 Socket.IO 实现实时聊天应用程序
  • 移动conda虚拟环境的安装目录
  • MAC 多应用切换技巧,单应用切换技巧
  • Adobe高阶技巧与设计师创意思维的进阶指南
  • 「日拱一码」015 机器学习常用库——scikit-learn
  • Appium与Appium Inspector配置教程
  • 埃隆・马斯克公司Neuralink 2025发布:脑机接口的跨越式突破
  • 【GNSS定位原理及算法杂记2】GNSS观测量:伪距、载波相位、多普勒频移
  • Day 24
  • 使用 Ansys Discovery 为初学者准备几何结构
  • IDS检测原理和架构
  • 分布式定时任务:xxl-job
  • CDC是什么?一文讲清CDC如何打通数据孤岛
  • linux升级降级内核实验
  • 使用 Pytorch Lightning 时追踪指标和可视化指标
  • JavaEE-博客系统项目
  • 不引入变量 异或交换的缺点