Spring Boot 2.5.0版本无法渲染JSP页面返回404错误问题求助
问题原因及解决步骤
1. 修正视图解析器前缀配置
你当前InternalResourceViewResolver的prefix属性末尾缺少路径分隔符/,导致最终拼接的JSP路径错误,找不到对应文件:
原错误代码:
viewResolver.setPrefix("/WEB-INF/jsp");
修正后:
viewResolver.setPrefix("/WEB-INF/jsp/");
修正后拼接视图名称得到的完整路径为/WEB-INF/jsp/index.jsp,可以正确匹配到你的JSP文件。
2. 调整tomcat-embed-jasper依赖的生效范围
Spring Boot 2.3+版本的Maven插件默认不会将scope=provided的依赖加载到运行时类路径,你当前tomcat-embed-jasper的scope为provided,会导致内嵌Tomcat缺少JSP解析能力。
你可以临时移除该依赖的provided scope验证问题,也可以修改spring-boot-maven-plugin配置,主动开启对provided依赖的加载:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin>
如果后续需要打独立WAR包部署到外部Tomcat,再把tomcat-embed-jasper的scope改回provided即可。
3. 修正MVC配置继承逻辑
你当前配置类继承了WebMvcConfigurationSupport,这会完全覆盖Spring Boot的Web MVC自动配置,可能导致默认的视图解析、静态资源处理逻辑异常。建议改成实现WebMvcConfigurer接口,保留自动配置能力的同时自定义扩展规则:
@Configuration @ComponentScan(basePackages = "school.com.my.myschool") public class ApplicationConfig implements WebMvcConfigurer { // 保留原有的addResourceHandlers和jspViewResolver方法不变 }
4. 对齐Java版本配置
你提到项目使用Java 11,但pom.xml中java.version属性配置的是1.8,修改为对应版本避免兼容性问题:
<properties> <java.version>11</java.version> </properties>
内容的提问来源于stack exchange,提问作者Wais Shuja
相关产品推荐
相关产品推荐

