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

遵循Spring Boot官方规范配置仍遇JSP缺失白标页,是否为框架Bug?

Spring Boot 白标页面问题排查:不是框架Bug,是配置细节踩坑

兄弟,先别着急认定是Spring Boot的Bug——我仔细看了你的代码和配置,问题出在几个容易忽略的细节上,咱们一个个捋清楚:

1. Tomcat Jasper依赖的Scope配置错误

你的tomcat-embed-jasper依赖设置了<scope>provided</scope>,这是核心问题!

provided意味着这个依赖只在编译、测试阶段可用,运行时会被排除。但Spring Boot内嵌Tomcat运行时,必须依赖这个库来解析JSP文件,缺失它的话,容器根本不知道怎么处理JSP,直接就返回白标错误页面了。

修改方案:把这个依赖的scope删掉(默认就是compile),或者明确改成compile:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <!-- 移除provided标签,让依赖在运行时也能被加载 -->
</dependency>

2. 确认JSP文件的目录结构是否匹配配置

你在application.properties里配置了spring.mvc.view.prefix=/WEB-INF/view/,那你的homepage.jsp必须严格放在src/main/webapp/WEB-INF/view/目录下!

  • 如果你把JSP放在src/main/resources或者其他非webapp目录里,Spring MVC根本找不到这个视图文件,自然会返回白标。
  • 检查一下你的项目目录,确保webapp是标准的Web资源根目录(Maven项目的默认结构就是如此)。

3. Spring Boot 2.4+版本的JSP支持注意项

你用的是Spring Boot 2.4.1,这个版本对JSP的支持有几个小细节:

  • 虽然你已经把打包方式设为war,但如果是用内嵌Tomcat直接运行(而不是部署到外部Tomcat),必须保证Jasper依赖在运行时存在——这又回到了第一个问题的scope配置。
  • 另外,Spring Boot官方其实不推荐在jar打包方式下使用JSP,因为Jar包的结构会限制JSP的加载,所以坚持用JSP的话,最好保持war打包方式。

4. 确认Controller是否被正确扫描

你的Application类标注了@SpringBootApplication,默认会扫描同包及子包下的所有组件。如果你的UserController和Application不在同一个包或子包下,那这个Controller根本不会被Spring识别,自然不会处理/请求。

  • 快速验证方法:在UserController的index方法里加一行打印语句:
    System.out.println("进入HomePage控制器方法");
    
    启动项目后访问/,如果控制台没输出,说明Controller没被扫描到,需要在Application类上添加@ComponentScan("你的Controller所在包路径")。

最后验证步骤

修改完上述配置后:

  1. 清理Maven缓存(mvn clean),然后重新打包运行(mvn spring-boot:run)
  2. 访问http://localhost:8080/,应该就能看到你的Mambo, This is home page标题了

这些都是Spring Boot结合JSP开发时的常见新手坑,不是框架的Bug~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:23:25