SpringBoot Web MVC应用无法解析视图问题求助
嘿,我太懂从熟门熟路的Spring Boot REST转到Web MVC初期踩坑的感觉了!虽然你没说具体遇到的问题(比如404、视图解析失败这类),但结合你已经做的配置,我给你列几个高频排查点,应该能帮你搞定:
常见问题排查指南
- 先确认JSP文件的位置是否完全匹配配置:你设置的视图前缀是
/WEB-INF/views/、后缀是.jsp,那你的hello.jsp必须精准放在src/main/webapp/WEB-INF/views/目录下!很多人会不小心把webapp目录建到src/main/resources下面,这绝对会导致视图找不到。 - 别手动指定
tomcat-embed-jasper的版本:Spring Boot的父依赖已经帮你管理了所有兼容的版本,如果你在pom.xml里手动加了jasper的版本号,很容易出现兼容性问题。直接引入依赖就行,不用写版本:<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> - 检查Controller的注解!别用错了:你用的是
@Controller而不是@RestController对吧?后者会把返回值直接序列化成JSON返回,完全不走视图解析器,这是转Web MVC时最容易犯的低级错误! - 开DEBUG日志看细节:启动项目时把日志级别调到DEBUG,你能看到Spring MVC解析视图的全过程,比如有没有找到
hello.jsp文件,日志里会有类似Looking up view name 'hello'的记录,一眼就能定位是路径问题还是解析器的问题。 - 打包方式选对:如果是用内嵌Tomcat跑JSP,建议把打包方式设为
war(pom.xml里<packaging>war</packaging>),虽然jar包也能跑,但内嵌Tomcat对JSP的支持有限,容易出奇怪的问题。
给你贴个正确的代码片段参考:
示例Controller
@Controller public class GreetingController { @GetMapping("/greeting") public String showGreeting() { return "hello"; // 对应/WEB-INF/views/hello.jsp } }
示例application.properties配置
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
如果做完这些还是有问题,把具体的错误信息(比如控制台报错、浏览器返回的状态码)贴出来,我再帮你精准定位!
内容的提问来源于stack exchange,提问作者Nirav Khandhedia
相关产品推荐
相关产品推荐

