2

非常に単純な 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>

コントローラー:

@Controller
@RequestMapping("/test")
public class TESTController  {
    private static Logger appLogger = Logger.getLogger("AppLogFile");

    public String serviceRequest(   Model model)
    {
        appLogger.info("======================= TESTController GET ===============================");
        model.addAttribute("returnString","TESTController handled the request") ;
        return "SingleStringView"; 
    }

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 -->

アプリは、/webapps/works で Tomcat 7 にデプロイされます。Tomcat ファイルの構造は次のとおりです。

webapps
    /works
        /WEB-INF
            /classes
            /lib

URL でコントローラーを呼び出そうとしています: localhost:8080/works/test

tomcat7-stdout には次のように表示されます。

1106 [pool-2-thread-1] DEBUG org.springframework.web.servlet.DispatcherServlet - [org.springframework.web.servlet.FrameworkServlet.CONTEXT.works] という名前の ServletContext 属性としてサーブレット 'works' の公開された WebApplicationContext

1106 [pool-2-thread-1] INFO org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'works': 初期化は 728 ミリ秒で完了しました

1106 [pool-2-thread-1] DEBUG org.springframework.web.servlet.DispatcherServlet - サーブレット「動作」が正常に構成されました

14068 [http-apr-8080-exec-2] DEBUG org.springframework.web.servlet.DispatcherServlet - 名前が「works」の DispatcherServlet が [/works/test] の GET リクエストを処理しています

14071 [http-apr-8080-exec-2] 警告 org.springframework.web.servlet.PageNotFound - 名前が「works」の DispatcherServlet で、URI [/works/test] の HTTP リクエストのマッピングが見つかりません

だから私の質問(最後に!):Springはコントローラーの注釈を認識していませんか?そうでない場合、この単純なセットアップで何が問題になっている可能性がありますか?

助けやアドバイスをありがとう、beeky

4

2 に答える 2

2

@RequestMappingアノテーションをメソッドに移動する必要がありますserviceRequest

@RequestMappingクラス レベルで を使用して@RequestMapping、そのクラスの注釈付きのすべてに共通のパス プレフィックスを指定できますが、メソッド レベルで注釈がないと効果がありません。

于 2012-04-07T16:01:22.297 に答える
1

サーブレット マッピング セクションに問題があるのではないでしょうか? 変更してみてください:

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

そしてさらに試みる。

于 2012-04-08T20:14:26.240 に答える