Spring Boot MVC中HTML正常访问但JSP返回Whitelabel错误如何解决
修复步骤
- 调整JSP文件存放路径
static目录为Spring Boot默认的静态资源存放目录,仅提供静态资源访问,不会解析JSP这类动态视图。你需要在src/main路径下新建webapp/WEB-INF/jsp目录,将所有JSP文件移动到该目录下。 - 新增视图解析器配置
在application.properties(或application.yml)配置文件中添加如下配置,指定JSP文件的路径映射规则:
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
配置完成后,Controller返回的视图名会自动拼接上述前后缀,定位到对应JSP文件。
- (可选)添加JAR包运行适配配置
如果项目需要打成可执行JAR包部署运行,需要在pom.xml的build节点中添加资源拷贝规则,将JSP文件打包到正确的类路径下:
<build> <resources> <resource> <directory>src/main/webapp</directory> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> <!-- 原有插件配置保留 --> </build>
替代方案(用HTML实现动态逻辑)
如果不想使用JSP,可改用Spring Boot官方推荐的Thymeleaf模板引擎,它支持原生HTML格式的模板文件,提供了与JSTL功能对等的标签库,可实现表单绑定、循环渲染、条件判断等所有你需要的动态功能:
- 引入Thymeleaf启动器依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
- 将HTML模板文件放到
src/main/resources/templates目录下,即可直接在HTML中使用Thymeleaf语法编写动态逻辑,无需额外配置后缀。
内容的提问来源于stack exchange,提问作者ServletException
相关产品推荐
相关产品推荐

