Spring MVC 404常见原因

今天工作的时候帮同事解决一个404错误,弄了半个小时才找到问题,原来是没有配置好<mvc:annotation-driven />。其实在开发过程中遇到过很多次404错误,本文总结一下常见原因。

项目中一般都使用tomcatSpring MVC组合,它们两的配置错误都可能导致404

Tomcat

  • tomcat的应用上下文目录配置错误
    一般是因为tomcat的应用上下文目录配置错误,比如如果项目部署在${TOMCAT_HOME}/webapps/tenmao,那么所有的URL都应该带有前缀tenmao。如果忘记了,则会导致所有请求都是404。

  • web.xml配置错误
    常见原因是由于<servlet-mapping>配置错误,比如

<servlet-mapping>
    <servlet-name>dispatch-servlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

以上这种配置,就要求所有的URL都以.do结尾,如果新增的接口没有,也会导致404

  • 判断方法
    tomcat导致的404,请求转发到DispatcherServlet,也就不会执行方法org.springframework.web.servlet.DispatcherServlet#doService

Spring MVC

常见原因是:

  • 没有配置注解@RestController@ResponseBody

  • 缺少<mvc:annotation-driven />

  • 判断方法
    断点在下面函数,可以看到所有注册的handlerMap,如果不在,则说明Controller或对应的方法注册失败

org.springframework.web.servlet.handler.AbstractUrlHandlerMapping#lookupHandler

参考

欢迎讨论,本人承诺非假日期间2小时内回复

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。