Spring Boot在匹配接口端点无法正常显示JSP页面的问题咨询
Spring Boot 访问接口无法渲染JSP页面问题排查方案
核心错因定位(对照现有配置逐一排查)
- 返回值与视图解析规则冲突
当前控制器中返回的字符串是home.jsp,但配置的视图解析规则设置了spring.mvc.view.suffix = .jsp。按照InternalResourceViewResolver的拼接逻辑,最终生成的视图路径为前缀 + 返回值 + 后缀,也就是/webapp/home.jsp.jsp,两个.jsp后缀直接叠加,根本找不到目标文件。 - JSP存放路径不符合内嵌Tomcat识别规则
配置的前缀指向/webapp/,但Spring Boot内嵌Tomcat不会识别项目根目录下自定义创建的webapp文件夹,JSP文件必须放到固定的src/main/webapp路径下的指定子目录才能被扫描到。另外如果项目采用jar包格式启动,Spring Boot原生是不支持加载JSP的,必须切换为war包打包格式才能正常运行。 - 依赖配置校验遗漏
即便已经引入了Tomcat Jasper相关依赖,也要确认是否引入了tomcat-embed-jasper核心解析组件,缺了这个组件内嵌Tomcat根本无法执行JSP的语法解析。同时要检查启动类的包扫描范围,确保能扫描到编写的HomeController,避免出现接口映射失效的问题。
可直接落地的修正步骤
- 修改控制器方法的返回值,去掉冗余的
.jsp后缀,让视图解析器可以自动完成路径拼接@RequestMapping("home") public String home() { System.out.println("Hello World"); return "home"; } - 调整视图解析配置,把前缀指向正确的JSP存放路径
spring.mvc.view.prefix = /WEB-INF/jsp/ spring.mvc.view.suffix = .jsp - 调整项目目录结构,把
home.jsp文件移动到src/main/webapp/WEB-INF/jsp/目录下,不要把JSP文件放到resources下的static、templates文件夹中——这两个路径分别是静态资源、Thymeleaf模板的专用路径,JSP放到这里无法被正常识别。 - 访问
/home接口时观察控制台输出:如果能打印出Hello World的日志,说明Controller逻辑已经正常执行,问题就出在路径拼接与文件存放位置上;如果没有输出日志,说明Controller未被Spring容器扫描到,需要调整启动类的包扫描范围。
内容的提问来源于stack exchange,提问作者Burakhan Aksoy
相关产品推荐
相关产品推荐

