4 回答

TA贡献1828条经验 获得超13个赞
这个项目里有两个容器。
Spring application context 和 Spring webapplication context。
分别对应两个配置文件applicationContext.xml 和 {servletName}-servlet.xml。
他们之间并不会共享管理的对象。
通过你的配置文件可以看出只有根容器Spring application进行了扫描, Spring MVC的容器(webapplication context)中没有管理的对象。
而 Spring 根容器(application context)不具备处理映射的功能,无法处理请求映射。
所以配置应该这样。
// spring-ctx.xml
....
// 根容器不扫描@Controller注解的类。
<context:component-scan base-package="gq.zpf_fly.first">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
...
// spring-mvc.xml
....
// 不是用默认过滤规则(指定包内全部扫描), 手动设置规则,只扫描@Controller注解的类。
<context:component-scan base-package="gq.zpf_fly.first" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--启用 MVC注解(@Controller,@RequestMapping)实现URL映射-->
<mvc:annotation-driven/>

TA贡献1895条经验 获得超3个赞
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
改为这个试下:
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
添加回答
举报