Spring mvc 是什么导致此Spring MVC应用程序中的映射失败?

Spring mvc 是什么导致此Spring MVC应用程序中的映射失败?,spring-mvc,Spring Mvc,我试图让一个非常简单的Spring@mvc应用程序工作,但我遇到了一个似乎是映射错误的问题 从web.xml: <servlet> <servlet-name>works</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-

我试图让一个非常简单的Spring@mvc应用程序工作,但我遇到了一个似乎是映射错误的问题

从web.xml:

<servlet>
    <servlet-name>works</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>works</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
works-servlet.xml:

<context:component-scan base-package="com.ami.dbconnect.controller" />

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

    <bean id="TESTController" class="com.ami.dbconnect.controller.TESTController"></bean>

    <!-- view resolver not shown -->
我试图用url:localhost:8080/works/test调用控制器

在tomcat7标准中,我看到:

1106[pool-2-thread-1]DEBUG org.springframework.web.servlet.DispatcherServlet-已发布的servlet“works”的WebApplicationContext作为名为[org.springframework.web.servlet.FrameworkServlet.CONTEXT.works]的ServletContext属性

1106[pool-2-thread-1]INFO org.springframework.web.servlet.DispatcherServlet-frameworkervlet“works”:初始化在728毫秒内完成

1106[pool-2-thread-1]调试org.springframework.web.servlet.DispatcherServlet-servlet“工作”配置成功

14068[http-apr-8080-exec-2]DEBUG org.springframework.web.servlet.DispatcherServlet-名为'works'的DispatcherServlet处理[/works/test]的GET请求

14071[http-apr-8080-exec-2]WARN org.springframework.web.servlet.PageNotFound-在名为“works”的DispatcherServlet中未找到URI为[/works/test]的http请求的映射

所以我的问题(最后!): Spring是否无法识别控制器中的注释?如果不是,这个简单的设置会有什么问题

谢谢你的帮助和建议,
beeky

您需要将
@RequestMapping
注释移动到您的
serviceRequest
方法中


类级别的
@RequestMapping
可用于为该类的所有带注释的
@RequestMapping
-指定公共路径前缀,但如果没有方法级别的注释,则不会产生任何效果。

问题可能出在servlet映射部分? 尝试更改:

<servlet-mapping>
    <servlet-name>works</servlet-name>
    <url-pattern>/works/*</url-pattern>
</servlet-mapping>

作品
/工作/*
然后再试一次

webapps
    /works
        /WEB-INF
            /classes
            /lib
<servlet-mapping>
    <servlet-name>works</servlet-name>
    <url-pattern>/works/*</url-pattern>
</servlet-mapping>