SpringBoot集成Tomcat9访问视图返回404错误问题排查求助
问题排查方向
- 最可能的核心问题:DispatcherServlet配置文件命名不匹配
Spring MVC默认读取的DispatcherServlet配置文件命名规则为<servlet-name>-servlet.xml,你的web.xml中servlet-name配置为dispatcher,因此配置文件必须命名为dispatcher-servlet.xml,你当前命名为Dispatcher_Servlet.xml,大小写、命名格式均不符合要求,Spring无法读取配置,导致映射不生效。
同时要确认该配置文件放在项目的WEB-INF根目录下,放错路径也会导致配置不加载。 - 视图文件缺失
你配置的视图解析器规则为前缀/WEB-INF/views/、后缀.jsp,需要确保项目中存在/WEB-INF/views/home.jsp文件,文件不存在会直接返回404。 - 请求路径错误
访问路径需要匹配项目的上下文路径,比如Tomcat部署时你的项目上下文路径为emusicstore,则正确的访问地址为http://localhost:8080/emusicstore/home,直接访问http://localhost:8080/home会触发404。 - SpringBoot项目配置兼容问题
如果你创建的是标准SpringBoot项目,传统的web.xml、DispatcherServlet XML配置方式默认不生效,SpringBoot的自动配置会覆盖XML配置。此时需要删除XML配置,在application.properties中添加以下配置即可:
另外如果是将SpringBoot项目打成war包部署到外置Tomcat,需要让启动类继承spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jspSpringBootServletInitializer,重写configure方法,否则请求无法被Spring接收。 - 包路径匹配问题
确认你的homeController类确实在com.emusicstore.controller包下,没有写错包名,否则<context:component-scan base-package="com.emusicstore"/>无法扫描到控制器类,映射不会注册。
内容的提问来源于stack exchange,提问作者Schrodinger Cat
相关产品推荐
相关产品推荐

