Spring Boot Web MVC应用JSP无法加载,显示白标错误页
别着急,咱们一步步来排查这个白标错误页的问题——这在Spring Boot MVC入门阶段可太常见了。
1. 先确认控制器配置是否到位
首先得确保你已经创建了带@Controller或@RestController注解的类,并且里面的请求映射路径是正确的。举个例子:
@Controller public class HomeController { // 这个映射路径要和你浏览器访问的路径对应 @GetMapping("/") public String home() { // 如果用Thymeleaf这类模板引擎,返回的字符串对应templates目录下的home.html return "home"; // 如果是直接返回JSON数据,换成@RestController,直接return "Hello World"就行 } }
要是没有控制器,或者映射路径和你访问的URL不匹配,Spring找不到对应的处理逻辑,自然就返回白标错误页了。
2. 检查主类的包扫描范围
你的主类标注了@SpringBootApplication,这个注解默认只会扫描主类所在包及其子包下的组件。比如主类在com.example.myapp包,那控制器得放在com.example.myapp或者它的子包(比如com.example.myapp.controller)里,不然Spring根本扫不到你的控制器。
如果控制器在其他包,得手动指定扫描范围:
@SpringBootApplication(scanBasePackages = "com.example.otherpackage") public class MyApplication extends SpringBootServletInitializer { // 你的其他代码 }
3. 静态资源/模板文件的位置要对
如果是返回HTML页面(比如用Thymeleaf):
- 先确认依赖加对了,Maven的话在pom.xml里加:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
- HTML文件必须放在
src/main/resources/templates目录下,文件名要和控制器返回的字符串一致(比如返回"home"就对应home.html)。
如果是直接访问静态页面(比如index.html),要把文件放在src/main/resources/static目录下,访问路径是http://localhost:8080/index.html。
4. 看看启动日志有没有线索
在IntelliJ的控制台里,找一找应用启动时的日志,有没有类似这样的内容:
Mapping GET "/" onto public java.lang.String com.example.myapp.controller.HomeController.home()
要是看不到这类日志,说明控制器没被Spring识别,回到步骤2检查包扫描范围就好。
5. 确认请求路径和端口都没错
比如控制器映射的是/hello,那你浏览器得访问http://localhost:8080/hello,而不是根路径/;另外如果你改了默认端口(不是8080),访问URL也要对应调整。
最后补全你的主类代码
你提供的主类代码截断了,记得把main方法补完整,这可是Spring Boot应用的启动入口:
public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); }
先从这几个点排查,大概率能找到问题所在。
内容的提问来源于stack exchange,提问作者RLeyva

