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

SpringBoot 3.0内嵌Tomcat已配置仍无法访问JSP返回404排查

SpringBoot内嵌Tomcat渲染JSP返回404问题修复方案

你现有代码里SayHelloController的映射逻辑、application.properties中的视图前后缀配置均无问题,404错误由三个核心配置错误导致,按以下步骤修复即可:

  • 依赖scope配置错误:当前tomcat-embed-jasper依赖设置为provided scope,代表运行阶段由外部容器提供该依赖,但你使用内嵌Tomcat启动时,该依赖不会被加载到运行时类路径,直接导致JSP解析引擎缺失。
    直接删除该依赖的<scope>provided</scope>配置,修改后依赖片段如下:
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    
    刷新Maven依赖时如果提示依赖找不到,直接删除本地Maven仓库中org/apache/tomcat/embed/tomcat-embed-jasper对应版本的缓存目录重新拉取即可,不要使用注释repository配置的临时方案,该方案会导致依赖索引损坏,拉取到残缺的依赖包。
  • JSP存放路径错误:你当前将JSP放在/src/main/resources/META-INF/resources/WEB-INF/jsp/路径下,该路径仅适合可执行jar包运行时识别JSP,IDEA社区版直接启动项目时,内嵌Tomcat默认扫描的JSP根路径是/src/main/webapp/。
    在src/main目录下新建webapp/WEB-INF/jsp层级目录,将sayHello.jsp移动到该目录下,最终路径为/src/main/webapp/WEB-INF/jsp/sayHello.jsp,删除原resources路径下的JSP文件避免路径冲突。
  • 版本兼容问题:你使用的SpringBoot 3.0.0 M3是里程碑预览版本,本身存在多个JSP渲染相关的已知兼容bug,和Java 18的适配也不完善。
    强烈建议将SpringBoot parent版本替换为正式稳定版(如3.0.2、2.7.10),从根源上避免预览版的不稳定问题。
  • IDEA配置校验:打开IDEA的Project Structure面板,找到Modules下的Web模块配置,确认Web资源目录指向你刚创建的src/main/webapp路径,若未自动识别则手动指定,保存配置后执行mvn clean清空之前的构建缓存。

补充说明:SpringBoot官方对内嵌容器运行JSP的支持存在明确限制,如果后续需要打包为jar部署,JSP仍可能出现路径识别问题,生产环境使用JSP建议打包为war包部署到外部Tomcat,或替换为Thymeleaf等官方原生支持的模板引擎,减少兼容问题。

修复完成后重启项目,访问http://localhost:8080/say-hello-jsp即可正常渲染JSP页面内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:48:23