SpringBoot项目构建war包--已解决!!!Whitelabel Error Page This application has no explicit mapping for /error-

背景

今天遇到的问题是要将一个新项目打包部署到老机器上,(由于以java -jar 的方式运行jar包没有前端资源,故放弃研究),索性在老机器上安装了tomcat,以war包的形式运行。(在这里感谢现实工作中大哥的思路指导)

废话不多说了,直接上教程

先贴一张本项目结构图—(不规范导致出现问题,建议规范目录构建)在这里插入图片描述
规范目录结构:
在这里插入图片描述

报错截图,接口状态是404在这里插入图片描述
浏览器报错:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback
Tue Aug 20 17:54:56 CST 2024
There was an unexpected error (type=Not Found, status=404).
在这里插入图片描述

解决流程

  1. 在 pom.xml 文件的 中指定 packaging 为 war
<packaging>war</packaging>

  1. 新增config类ServletInitializer :确保 Spring Boot 正确配置为 WAR 部署。例如,SpringBootServletInitializer 应该被实现
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(SvcsApplication.class);
    }
}

  1. web.xml 中配置了 Spring 的 DispatcherServlet,并映射了合适的 URL pattern
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

  1. web.ml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">




    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


</web-app>
  1. context.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/">
</Context>
  1. SpringBootApplication 类继承了 SpringBootServletInitializer
@SpringBootApplication
public class SvcsApplication extends SpringBootServletInitializer {

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

    public static void main(String[] args) {
        SpringApplication.run(SvcsApplication.class, args);
    }
}

  1. 开始打包
    暂无
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    复制到tomcat的webapps文件,tomcat自动检测war包并解压
    复制到tomcat的webapps文件
    附上打包目录:
    在这里插入图片描述

启动tomcat!!!
在这里插入图片描述

至此完结

若要部署其他机器,只需要复制其文件夹到webapps文件即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值