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

Spring Boot访问JSP报404 找不到/WEB-INF/jsp/home.jsp问题

问题产生原因

一共4个核心问题叠加导致JSP找不到报404:

  • 视图配置键名错误:你写的spring.view.prefix/spring.view.suffix不是Spring Boot MVC的合法配置项,正确前缀是spring.mvc.view,缺了mvc段导致配置完全不生效。
  • JSP存放路径不符合规范:Spring Boot内嵌Tomcat默认只会从src/main/webapp目录下解析WEB-INF资源,如果你把WEB-INF目录建在src/main/resources下,运行时根本不会被扫描到。
  • JSP解析依赖作用域配置错误:你把tomcat-embed-jasper的scope设为provided,该配置表示依赖仅在编译、测试阶段生效,运行时由外部容器提供,但你用内嵌Tomcat启动时,运行环境缺JSP解析引擎,无法处理JSP文件。
  • 打包形式限制:Spring Boot官方明确说明,内嵌Tomcat不支持以jar包形式运行JSP,如果项目打包为jar启动,无论怎么配置都无法正常解析JSP。

另外你IDE提示的Cannot resolve MVC view 'home'警告,就是配置不生效+JSP路径不对共同导致的。

修复步骤

按顺序操作即可解决问题:

  1. 修正application.properties中的视图配置,替换为正确的配置键:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
  1. 调整项目目录结构,在src/main下新建webapp目录,将WEB-INF文件夹整体移到该目录下,最终JSP文件路径为src/main/webapp/WEB-INF/jsp/home.jsp,保证webapp和java、resources目录平级。
  2. 修正pom.xml中JSP解析依赖的配置,删除tomcat-embed-jasper依赖的provided scope配置,保证内嵌启动时能加载到解析引擎:
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

如果后续需要将项目打包部署到外部Tomcat,再把该依赖的scope改回provided即可。
4. 如果你需要打包运行项目,在pom.xml的<artifactId>节点下添加war包配置,不要用jar包启动JSP项目:

<packaging>war</packaging>
  1. 执行mvn clean清空旧编译缓存,重启项目即可正常访问JSP页面。

注:你现有控制器、启动类、JSP文件本身的代码没有逻辑问题,不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.05 16:18:28