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 EE | Tomcat 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>