Spring Boot中Controller无法返回index.jsp,出现白标错误求助
解决Spring Boot控制器无法关联JSP视图的问题
针对你遇到的控制器返回index却出现白标错误的问题,从依赖配置、视图解析、文件位置三个核心方向排查:
1. 确认JSP相关依赖是否齐全
Spring Boot Starter Web默认不包含JSP解析所需的依赖,需要在pom.xml中手动添加:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
如果是Gradle项目,对应依赖配置:
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl'
2. 配置视图解析器路径
在src/main/resources/application.properties中添加JSP视图的前缀和后缀配置:
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
这会让Spring MVC明确去/WEB-INF/views/目录下查找后缀为.jsp的视图文件。
3. 确认JSP文件的存放位置
按照上述配置,index.jsp必须放在src/main/webapp/WEB-INF/views/目录下,目录结构需准确:
src └── main ├── java │ └── projetJpa │ └── web │ ├── Main.java │ └── HomeControler.java ├── resources │ └── application.properties └── webapp └── WEB-INF └── views └── index.jsp
如果没有webapp目录,需手动创建(Maven默认不会自动生成该目录)。
4. 简化控制器映射(可选优化)
你的控制器映射可以简化,避免冗余层级,示例如下:
@Controller public class HomeControler { @GetMapping("/") public ModelAndView index() { return new ModelAndView("index"); } }
原有的类注解@RequestMapping("/")加方法注解@RequestMapping(""),和直接使用@GetMapping("/")效果一致,但后者逻辑更清晰。
内容的提问来源于stack exchange,提问作者Big H
相关产品推荐
相关产品推荐

