javaWeb02-Tomcat

发布于:2025-07-03 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、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>