Spring Boot中JSP无法映射到控制器的问题求助
Spring Boot JSP视图映射问题排查及学习资源推荐
一、问题排查步骤
1. 修正JSP文件存放路径
Spring Boot默认不会将src/main/resources/WEB-INF识别为Web应用资源目录,正确的JSP存放路径应为src/main/webapp/WEB-INF/jsp/index.jsp。请将JSP文件从resources目录移至webapp目录下,若webapp目录不存在,手动创建该目录。
2. 验证视图解析器配置
检查application.properties中的视图前缀后缀配置,确保格式正确:
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
注意前缀末尾的斜线不能省略,后缀要与JSP文件扩展名一致。
3. 检查控制器注解与返回值
确保UserController使用@Controller注解而非@RestController(@RestController会将返回值直接作为响应体返回,而非解析为视图),同时方法返回逻辑视图名而非完整路径:
@Controller public class UserController { @GetMapping("/index") public String showIndex() { return "index"; // 返回逻辑视图名,由视图解析器拼接前缀后缀 } }
4. 完善pom.xml依赖配置
Spring Boot 3.x基于Jakarta EE,需确保依赖版本匹配:
- 添加
tomcat-embed-jasper(JSP编译引擎) - 添加JSTL相关依赖(若JSP用到标签库)
- 若使用WAR打包,设置打包方式为
war,并将spring-boot-starter-tomcat的scope设为provided
示例依赖片段:
<packaging>war</packaging> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>jakarta.servlet.jsp.jstl</groupId> <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies>
5. 配置IntelliJ IDEA Web资源目录
右键src/main/webapp目录 → 选择Mark Directory as → 点击Web Resource Directory,确保IDEA正确识别该目录为Web资源根目录。
6. 检查打包与运行方式
- 若使用JAR打包,Spring Boot对JSP的支持存在限制,建议改为WAR打包,通过
java -jar命令运行或部署至外部Tomcat。 - 若使用IDEA运行,确保运行配置为Spring Boot应用,而非普通Java应用。
二、优质Spring Boot在线学习资源
- Spring官方文档:覆盖Spring Boot所有版本的特性、配置与最佳实践,是最权威的参考资料。
- Spring Boot官方指南:提供从入门到实战场景的分步教程,包含快速启动、数据库集成、安全等常见场景。
- Stack Overflow Spring Boot标签:有大量真实问题与解决方案,遇到问题时优先检索已有回答。
- GitHub开源实战项目:如电商、博客类Spring Boot项目,通过阅读源码学习工程化开发思路。
- 技术博客系列教程:专注Java后端的技术博客发布的Spring Boot系列文章,多结合实际业务场景讲解,实用性强。
内容的提问来源于stack exchange,提问作者ketan2jangid
相关产品推荐
相关产品推荐

