Spring MVC - 对Tomcat中应用程序的所有请求在war打包后导致错误404
Posted
技术标签:
【中文标题】Spring MVC - 对Tomcat中应用程序的所有请求在war打包后导致错误404【英文标题】:Spring MVC - All requests to application in Tomcat result in Error 404 after war packaging 【发布时间】:2020-02-13 06:40:27 【问题描述】:编辑:通过使主 Startup 类扩展 SpringBootServletInitializer 修复了该问题。
我正在尝试使用 webapp-runner 和 .war 打包通过 Maven 部署 Spring MVC 项目。
在通过 IntelliJ 的运行配置运行时,它在本地 Tomcat 安装上运行良好,但是当我尝试运行 war 包时,它总是返回未找到。
我使用以下命令运行它:
java -jar target/dependency/webapp-runner.jar target/*.war
这是我的项目结构:
这里要注意的是,如果我添加随机 index.html webapp 目录中的文件,它被正确映射并找到 200 OK。
我对 Spring 技术还很陌生,所以如果你能帮助我解决这个应用程序的架构问题,以便在打包后请求映射正常工作,我将非常感激。
这是我的 HomeController:
@Controller
@RequestMapping("/")
public class HomeController
public String index()
return "index";
我应该改变什么?我的 Thymeleaf 模板应该在 webapp 文件夹中吗?为什么Tomcat打包后不能用现在的映射方式定位到它们?
【问题讨论】:
您正在使用 Spring BOot 为什么不简单地运行战争而不是您现在在命令行上执行的操作?此外,在使用战争时,您是否按照 Spring Boot 指南创建可部署战争? @M.Deinum “Webapp 运行器旨在允许您使用简单的 java -jar 命令将文件系统上的爆炸或压缩战争启动到 tomcat 容器中。”是的,战争是可部署的 我不怀疑它是可部署的,但您是否采取了指南中提到的步骤使其成为战争。 【参考方案1】:在war 文件中,URL 上下文是war 文件的名称。所以在你的情况下是http://host:port/slupov-personal/
。
【讨论】:
结果还是一样。此 URL 再次命中 404。 你点击了什么网址? localhost:8080 和 localhost:8080/slupov-personal 都返回 404以上是关于Spring MVC - 对Tomcat中应用程序的所有请求在war打包后导致错误404的主要内容,如果未能解决你的问题,请参考以下文章
如何在传统的 tomcat webapps 文件夹中部署 Spring Boot MVC 应用程序?
使EL与嵌入的tomcat 7一起工作(使用spring MVC)
Spring MVC 使用 STS 和 tomcat devloader