springboot极简教程022-tomcat部署

本文详细介绍如何在Tomcat上部署Spring Boot项目,包括修改项目配置、导出WAR包及在Tomcat上进行部署的步骤。通过具体示例,演示了如何避免常见问题,如代码更新不生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tomcat的安装此处忽略,可以网上搜索。参考:

以HelloWord这个项目为例(参见GitHub:https://github.com/bigsinger/spring_study/tree/master/L1HelloWorld)说明。

项目工程修改

新建ServletInitializer类

package com.example.helloworld;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(HelloworldApplication.class);
    }

//    public static void main(String[] args) throws Exception {
//        SpringApplication.run(HelloworldApplication.class, args);
//    }

}

tomcat依赖修改为provided

如果是pom.xml,则修改为:

<!--测试发现这样配置既不影响本地springboot直接运行调试,也不影响发布部署-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

修改工程导出war

如果是pom.xml,则修改为:

<packaging>war</packaging>

导出war包

  • IDEA菜单:Build->Build Artifacts->helloworld:war->Build
  • 选择右侧侧边栏的【Maven Projects】->Plugins->war->war:war

测试发现第一种方法靠谱一些,第二种方法打出的包不会立即更新代码,也即打出的包还是老的,有点坑爹。

编译成功后,会在项目目录下生成一个target目录,target目录下有一个war包,例如:helloworld-0.0.1-SNAPSHOT.war

部署

Windows上部署

运行Tomcat,Tomcat会自动监控webapps目录下的文件,如果有新的war包,会自动解压。

我们把编译导出的war包(例如上面的helloworld-0.0.1-SNAPSHOT.war)重命名为helloworld.war,然后复制到tomcat的webapps目录下,此时可以观察tomcat的服务会监控到webapps目录下文件的变化,自动将新复制进来的helloworld.war解压并初始化,解压目录为war的同名目录,例如这里是:helloworld

如果没有出错则会观察到tomcat控制台输出以下日志:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.6.RELEASE)

当然还有其他类似URL映射的信息等,和在IDEA中直接运行起来输出的日志类似,说明服务部署成功了。

访问

在浏览器中访问时,需要注意的是,由于tomcat自动解压缩出了一个目录,例如上面的helloworld.war解压目录为helloworld,那么在浏览器中要这样访问:

http://localhost:8080/目录名/原URL映射地址

上面的helloworld示例的访问链接是:

http://localhost:8080/helloworld/
http://localhost:8080/helloworld/index

我们在IDEA中开发时,使用的是如下地址:

http://localhost:8080/
http://localhost:8080/index

现在多了一个目录,如何保持一致呢?

可以利用tomcat的默认目录ROOT来配置,例如我们可以把helloworld-0.0.1-SNAPSHOT.war重命名为ROOT.war,然后复制到tomcat\webapps目录下,tomcat会自动解压出ROOT目录,如果没有出错的话就可以直接在浏览器中访问如下地址了:

http://localhost:8080/
http://localhost:8080/index

只要war包正确,正在开启的tomcat其实全程可以不用重新启动的,还是很方便的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asmcvc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值