SpringBoot项目打包成war包并部署在tomcat上运行的操作步骤

 更新时间:2024年03月29日 09:46:46   作者:涛哥是个大帅比  
我们开发 SpringBoot 项目有时我们会需要打包成 war 包,放入外置的 Tomcat 中进行运行,或者使用工具idea直接启动,便于开发调试,本文给大家分享SpringBoot项目打包成war包并部署在tomcat上运行的操作步骤,感兴趣的朋友一起看看吧

项目场景:

        正常情况下,我们开发 SpringBoot 项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了。

        有时我们会需要打包成 war 包,放入外置的 Tomcat 中进行运行,或者使用工具idea直接启动,便于开发调试。

实现步骤

1、将pom文件打包方式更改为 war

<packaging>war</packaging>

2、 排除内置 Tomcat

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<!-- 排除内置的tomcat -->
	<exclusions>
		<exclusion>
			<artifactId>org.springframework.boot</artifactId>
			<groupId>spring-boot-starter-tomcat</groupId>
		</exclusion>
	</exclusions>
</dependency>

3、添加tomcat依赖,需要用到 servlet-api 的相关 jar 包 

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<!-- tomcat范围改成provided,否则后面就会出问题,tomcat无法解析jsp -->
	<scope>provided</scope>
</dependency>

4、  继承 SpringBootServletInitializer 并重写 configure 方法

新建文件文件名随意,或者直接修改启动类继承 SpringBootServletInitializer 并重写 configure 方法,也是一样的。

package com.test;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
 * 注意,使用war方式部署,需要开启此类
 *
 */
public class ServletInitializer extends SpringBootServletInitializer {
    @Override  
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {  
        return application.sources(ApplicationMain.class);  
    }
} 

部署方式:

方式一:使用外部tomcat启动

1、利用maven命令打包

2、 将打的war包,复制粘贴到tomcat的webapps目录下(不用解压,启动tomcat自动解压)

3、启动tomcat 

在tomcat安装目录下的bin目录下面找到startup.bat命令,启动tomcat

 4、启动结果

war包自动解压了

5、 测试结果,访问swagger页面:

访问路径这里需要注意,原来我们在application.properties配置的访问路径已经不生效了。

这是原来访问路径:http://localhost:8080/testservice/swagger-ui.html

#已经不生效了
server.servlet.context-path=/testservice

现在的访问路径:

http://localhost:[端口号]/[打包项目名]/

比如我现在的访问路径就是:

http://localhost:8080/spring-boot-test-war/swagger-ui.html

 spring-boot-test-war是我打包后的项目名,这个可以改的。

 方式二:使用工具idea直接启动

1、配置web.xml文件

点击File->Project Structure

 创建src/main/webapp和web.xml

 此时项目结构图如下:

 2、配置artifacts

配置完后,tomcat启动才能找到这个war包,会生成out目录输出文件。

当然你也可以选择target下面已经打包好的war包,但是这样有个缺点,就是每次改文件你都需要用maven重新打包,输出到target目录下,不方便开发。

3、配置tomcat

在IDEA右上角的项目运行列表中选中 Edit Configurations

进入新的窗口点击"+",找到Toncat Server中的Local进行点击,配置Tomcat路径

4、tomcat 选择启动的war包

这里注意选择exploded结尾的,才是out目录输出的

Application context上下文配置访问路径 

访问路径这里需要注意,原来我们在application.properties配置的访问路径已经不生效了。

#已经不生效了
server.servlet.context-path=/testservice

现在的访问路径:

http://localhost:8080/testservice/swagger-ui.html

 testservice是我Application context上下文配置的访问路径 ,这个可以改的。

5、配置tomcat启动默认打开的页面

6、启动结果

点击启动

到此这篇关于SpringBoot项目打包成war包并部署在tomcat上运行的操作步骤的文章就介绍到这了,更多相关SpringBoot打包成war包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决@ServerEndpoint不能注入@Autowired的问题

    解决@ServerEndpoint不能注入@Autowired的问题

    这篇文章主要介绍了解决@ServerEndpoint不能注入@Autowired的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java实战之王者荣耀的英雄是怎么产生的?

    Java实战之王者荣耀的英雄是怎么产生的?

    这篇文章主要介绍了Java实战之王者荣耀的英雄是怎么产生的?文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • springboot配置文件中属性变量引用方式@@解读

    springboot配置文件中属性变量引用方式@@解读

    这篇文章主要介绍了springboot配置文件中属性变量引用方式@@解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 使用JPA自定义id策略避免主键自增

    使用JPA自定义id策略避免主键自增

    这篇文章主要介绍了使用JPA自定义id策略避免主键自增问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java 位运算符>>与>>>区别案例详解

    Java 位运算符>>与>>>区别案例详解

    这篇文章主要介绍了Java 位运算符>>与>>>区别案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • SpringBoot 文件或图片上传与下载功能的实现

    SpringBoot 文件或图片上传与下载功能的实现

    这篇文章主要介绍了SpringBoot 文件或图片上传与下载功能的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Java8之lambda表达式基本语法

    Java8之lambda表达式基本语法

    本文通过示例大家给大家介绍了java8之lambda表达式的基本语法,感兴趣的的朋友一起看看吧
    2017-08-08
  • 基于Java实现简单的时序数据压缩算法

    基于Java实现简单的时序数据压缩算法

    这篇文章主要为大家详细介绍了如何利用Java语言实现简单易懂的时序数据压缩算法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • SpringMVC对自定义controller入参预处理方式

    SpringMVC对自定义controller入参预处理方式

    这篇文章主要介绍了SpringMVC对自定义controller入参预处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Feign 日期格式转换错误的问题

    Feign 日期格式转换错误的问题

    这篇文章主要介绍了Feign 日期格式转换错误的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论