2

私はSpring MVCの世界でかなりのニュースであり、あなたに答えがあります.

STS\Eclipse の関連するテンプレート プロジェクトによって、新しい Spring MVC プロジェクトを作成しました。

わかりました、単純な事前構成された Spring MVC プロジェクトが作成されます。

このプロジェクトは、 servlet-context.xmlファイル内で次のタグを使用して、注釈駆動型になるように構成されています。

<annotation-driven />

このタグは、メッセージ変換、JSR 303 検証などの追加サービスを提供するヘルパー タグであり、これは厳密には必要ないため、単純なコントローラーが機能します (クラスに @Controller として注釈を付け、コンポーネントによってスキャンするパッケージを指定するだけです)。 -タグをスキャン)

わかりました...これは私には明らかです...しかし、STS\Eclipseによって作成された例では、servlet-context.xmlファイルから注釈駆動型タグを削除すると、適切に機能するために次のものも削除する必要があることに気付きました同じ構成ファイルからのタグ:

<resources mapping="/resources/**" location="/resources/" />

アノテーション駆動タグを削除しても、以前のリソース マッピング タグを削除しない場合、アプリケーションを起動すると、これは実行されません。これは実行されず、HTTP ステータス 404 というエラーが発生します。私が持っているトレース:

INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 1104 ms
dic 03, 2012 12:57:16 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/andrea/SpringSource/vfabric-tc-server-developer-2.7.2.RELEASE/base-instance/webapps/ROOT
dic 03, 2012 12:57:16 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/andrea/SpringSource/vfabric-tc-server-developer-2.7.2.RELEASE/base-instance/webapps/manager
dic 03, 2012 12:57:16 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
dic 03, 2012 12:57:16 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3144 ms
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/maventestwebapp/] in DispatcherServlet with name 'appServlet'

しかし、以前のリソースマッピングタグも削除すると、プロジェクトはうまく実行されます...つまり、これが問題になるはずです...アノテーション駆動型のサポートが有効にされていないと、リソースマッピングは機能しないようです...

なんで?何が問題ですか?また、以前のリソース マッピング タグの正確な動作は何ですか?

どうもありがとう

アンドレア


これは私のservlet-context.xml設定ファイルのコードです:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!-- Enables the Spring MVC @Controller programming model -->
<!--  <annotation-driven /> -->

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<context:component-scan base-package="com.mycompany.maventestwebapp" />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" /> 

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

4

1 に答える 1

1

ログファイルを確認した後、リソースはエラーなしで読み込まれますが、コントローラーに対して警告が表示されます。「警告:org.springframework.web.servlet.PageNotFound-URIを使用したHTTPリクエストのマッピングが見つかりません[/ maventestwebapp /] 'appServlet'"という名前のDispatcherServletにあります。これが404エラーの原因だと思います。

Springの仕様に従い、<mvc:annotation-driven />と<mvc:resources/>の間に関係や依存関係はありません。

また、<mvc:resources />を維持することにより、<mvc:annotation-driven />を使用せずにサンプルアプリケーションをテストしましたが、正常に機能しています。さらに調査するために、servlet-configファイルを投稿してください。

于 2012-12-03T07:30:51.283 に答える