Spring MVC项目部署Tomcat9后访问报404资源不可用问题求助
问题排查及解决方案
- 第一个问题:DispatcherServlet映射路径配置错误
你当前web.xml里DispatcherServlet的url-pattern配置为/spring-mvc-demo,这意味着只有请求路径为http://<host>:<port>/<应用上下文路径>/spring-mvc-demo时才会被Spring MVC的核心分发器处理。你默认的应用上下文路径是/spring-mvc-demo,所以直接访问/spring-mvc-demo/时,请求根本没有进入DispatcherServlet,自然返回404。
修改方案:将web.xml里的servlet-mapping的url-pattern改为/,所有应用内的请求都会交由DispatcherServlet处理:
<servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
- 第二个问题:验证组件扫描是否生效
你配置的<context:component-scan base-package="main.webapp" />理论上会扫描所有子包下的Spring组件,启动服务时可以观察控制台是否打印HomeController bean getting intiated这段日志,如果没有打印,说明Controller没有被Spring容器实例化,可以将base-package修改为Controller所在的完整包路径验证:
<context:component-scan base-package="main.webapp.springdemo.controller" />
- 第三个问题:检查视图文件是否存在
确认你的项目路径下是否存在/WEB-INF/view/main-menu.jsp文件,如果文件缺失,请求进入Controller后也会返回404错误。 - 额外验证点:检查依赖包部署是否完整
确认你项目依赖的Spring核心包、Spring Web MVC包等所有依赖jar包,都已经被部署到Tomcat应用的WEB-INF/lib目录下,如果缺失依赖,Controller也无法正常实例化,会出现404问题。
修改完成后重新部署项目,访问http://localhost:8080/spring-mvc-demo/即可正常打开页面。
内容的提问来源于stack exchange,提问作者ANKIT SRIVASTAVA
相关产品推荐
相关产品推荐

