Tomcat部署Spring MVC项目访问/hello-world报404错误排查求助
错误原因及修复方案
核心错误1:DispatcherServlet映射规则配置错误
你当前web.xml中DispatcherServlet的映射配置为<url-pattern>/*</url-pattern>,该规则会拦截所有请求,包括Controller返回视图名后,Spring MVC内部转发到Thymeleaf模板的请求。DispatcherServlet会把转发的/WEB-INF/views/hello_world.html路径当做新的Controller接口去匹配,找不到对应映射就返回404。
修复方式:将web.xml中的servlet-mapping配置修改为:
<servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
<url-pattern>/</url-pattern>只会拦截外部用户发起的请求,不会拦截内部的视图转发请求,不会影响模板渲染。
核心错误2:访问路径缺少应用上下文路径
你的Maven项目artifactId为web2,默认部署到Tomcat时,应用的上下文路径为/web2,你直接访问http://localhost:8080/hello-world不会进入你的应用,自然返回404。
修复方式二选一:
- 调整访问路径为
http://localhost:8080/web2/hello-world - 在Tomcat部署配置中,将当前应用的上下文路径设置为
/,即可继续使用原路径访问。
可选检查项
请确认你的hello_world.html文件存放在项目的src/main/webapp/WEB-INF/views/目录下,路径不匹配也会触发404错误。
内容的提问来源于stack exchange,提问作者Ivan Aleksandrov
相关产品推荐
相关产品推荐

