搭建Spring-MVC项目时,可能会遇到这种情况。
解决办法:
在springmvc-servlet.xml文件中添加:
<context:annotation-config />
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
总结:要使用spring mvc中的@Controller注解,就必须要配置<mvc:annotation-driven />,否则org.springframework.web.servlet.DispatcherServlet无法找到控制器并把请求分发到控制器。
最后的配置如果没有mvc:annotation-driven/,那么所有的Controller可能就没有解析,所有当有请求时候都没有匹配的处理请求类,就都去mvc:default-servlet-handler/即default servlet处理了。添加上mvc:annotation-driven/后,相应的do请求被Controller处理,而静态资源因为没有相应的Controller就会被default servlet处理。总之没有相应的Controller就会被default servlet处理就ok了。