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
相关产品推荐
相关产品推荐

