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

Spring Boot无法检测含WEB-INF/META-INF路径的HTML文件问题

解决Spring Boot嵌入式Tomcat下"Path with 'WEB-INF' or 'META-INF'"错误

问题根源

Spring Boot的ResourceHttpRequestHandler会处理static、public等公开静态资源目录的请求,而WEB-INF是受保护目录,禁止被静态资源处理器直接访问。你把WEB-INF放在static目录下,触发了这个拦截规则;同时视图解析器的前缀配置错误,导致框架试图从静态资源目录加载受保护的视图文件。

修复方案

1. 调整目录结构

将WEB-INF文件夹直接移至src/main/resources根目录下,不要嵌套在static里,正确结构如下:

src/
└── main/
    ├── resources/
    │   ├── WEB-INF/
    │   │   └── views/
    │   │       └── loginPage.html
    │   └── static/  # 用于存放css、js、图片等公开静态资源
    └── java/
        └── com/xxx/controller/GreetingsController.java

2. 修正视图前缀配置

修改application.properties中的视图前缀,移除/static/,因为src/main/resources是Spring Boot默认的资源根路径:

server.address=0.0.0.0
server.port=8080

spring.mvc.view.prefix= /WEB-INF/views/
spring.mvc.view.suffix=.html

3. 适配Thymeleaf的最佳实践(若使用Thymeleaf)

如果你用Thymeleaf作为视图模板,更推荐将html文件放在src/main/resources/templates目录下,无需使用WEB-INF,同时调整配置:

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

此时控制器返回loginPage,框架会自动找到templates/loginPage.html,这是Spring Boot整合Thymeleaf的标准用法。

4. 重启项目

清理项目的target目录,重新构建并启动应用,确保所有配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:00:08