You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot直接访问JSP:IDE正常,WAR包部署Tomcat报404

部署外部Tomcat出现404的原因分析
  • JSP文件路径不符合外部Tomcat规范
    Spring Boot内嵌Tomcat兼容灵活的资源位置,但外部Tomcat严格遵循Servlet规范,要求JSP文件必须放在src/main/webapp目录下。如果你的项目没有这个目录,或者打包时该目录未被Maven WAR插件正确包含,外部Tomcat就找不到employeeView.jsp文件。

  • 上下文路径未适配外部Tomcat
    内嵌Tomcat默认上下文路径为/,所以直接访问/employeeView.jsp有效。但部署到外部Tomcat后,上下文路径自动变为WAR包名称(即NAME_OF_WAR)。如果你的视图解析器前缀硬编码为固定路径(比如/WEB-INF/jsp/),或者控制器跳转路径没有动态适配上下文,就会导致请求路径和实际资源路径不匹配,触发404。

  • WAR包打包不规范

  1. 启动类未继承SpringBootServletInitializer:Spring Boot项目部署到外部Tomcat必须让启动类继承该类并重写configure方法,否则Tomcat无法正确加载Spring Boot应用上下文。代码示例:
public class YourApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(YourApplication.class);
    }
}
  1. pom.xml配置问题:确保打包类型设置为war,并将内嵌Tomcat依赖设为provided避免冲突:
<packaging>war</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
  1. 资源打包遗漏:检查mvn package生成的WAR包,确认employeeView.jsp是否在webapp目录下,避免因Maven配置错误导致资源未被打包。
  • JSP依赖与外部Tomcat版本不兼容
    如果项目中JSP相关依赖(如JSTL)的版本与外部Tomcat内置的Servlet/JSP API版本冲突,会导致Tomcat无法解析JSP文件,返回404错误。需确保依赖版本与Tomcat版本匹配(比如Tomcat 9对应Servlet 4.0、JSP 2.3版本)。

内容的提问来源于stack exchange,提问作者Shoaeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:49:58