Spring Boot中JSP视图无法找到的问题排查与解决
Spring Boot无法找到JSP视图的解决方案
问题定位
从提供的配置和日志来看,主要有以下几个问题导致JSP视图无法被找到:
pom依赖重复且范围错误
- 重复引入了
tomcat-embed-jasper依赖,其中一个设置了<scope>provided</scope>,本地运行时该依赖会缺失,无法编译JSP。 spring-boot-starter-tomcat设置了<scope>provided</scope>,本地运行嵌入式Tomcat时会缺少必要的Tomcat核心依赖。
- 重复引入了
视图前缀配置错误
spring.mvc.view.prefix配置为/webapp/WEB-INF/jsp/,而webapp本身就是Web应用的根目录,正确前缀应该是/WEB-INF/jsp/。
JSP文件位置或名称不匹配
- 需要确认
main/webapp/WEB-INF/jsp/目录下是否存在名为hello.jsp的文件,文件名需和Controller返回的hello完全一致(大小写敏感)。
- 需要确认
修复步骤
1. 修正pom.xml依赖
删除重复的tomcat-embed-jasper依赖,调整spring-boot-starter-tomcat的scope(本地开发无需设为provided):
<dependencies> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!-- 无需指定版本,spring-boot-starter-parent会统一管理版本 --> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 本地开发时去掉provided,若后续打包war部署到外部Tomcat,再重新设置为provided --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
2. 修正application.properties配置
修改视图前缀为正确路径:
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
3. 确认JSP文件存在
确保src/main/webapp/WEB-INF/jsp/hello.jsp文件存在,示例内容可参考:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Hello</title> </head> <body> <h1>Hello World!</h1> </body> </html>
4. 重启应用
执行mvn clean清理Maven缓存,然后重启Spring Boot应用,访问http://localhost:8080/即可正常加载JSP页面。
内容的提问来源于stack exchange,提问作者lalala
相关产品推荐
相关产品推荐

