遇到这个问题总结一下:
1. springmvc的配置文件没有被加载,所以这里特别说明一下,如果您使用的是maven项目,并且在web.xml文件中配置的springmvc配置文件在classpath下,务必将配置文件放在resource目录而不是java目录下,您不妨打开target目录或者tomcat部署的目录看classes目录下是否有该配置文件。
2. 开启spring的注解功能,直接在springmvc的配置文件的beans节点中加入(mvc命名空间后面源码有有)用来开启注解
3. 确认扫描的包名没有错
4. 如果你发现访问一个url后控制器执行了但是还是404并且还是如题所示的错误,那么你就要注意了,原因是控制器返回的视图又被dispatcherservlet当做控制器访问了,当他发现没有找到对应的控制器就会返回404,而你要返回的视图是个静态资源,此时在springmvc的配置文件中添加
<mvc:default-servlet-handler/>
这里贴上springmvc配置文件的源码
``` xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--开启注解--> <mvc:annotation-driven/> <!--访问静态资源(假如没找到相应的控制器就去找静态资源,如果都没有则返回404)--> <mvc:default-servlet-handler/> <!--配置要自动扫描的包--> <context:component-scan base-package="com.jhinwins.*"></context:component-scan> <!-- 视图解析(不必须) --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/"></property> <property name="suffix" value=".html"></property> </bean> </beans>
```