4 回答

TA貢獻1828條經(jīng)驗 獲得超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
....
// 不是用默認過濾規(guī)則(指定包內(nèi)全部掃描), 手動設置規(guī)則,只掃描@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)實現(xiàn)URL映射-->
<mvc:annotation-driven/>

TA貢獻1895條經(jīng)驗 獲得超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>
添加回答
舉報