2012-02-05 9 views
0

Spring MVCの基本を学び、URLがコントローラに解決される方法に問題があります。私はこれを踏み台としてこのtutorialと一緒に働いています。それは、Tomcatの下で細かい操作するとURL /context/welcome.htmは、次のような注釈されているコントローラに解決私は得ることができます。RESTスタイルのURLのDispatcherServletの設定

@Controller 
@RequestMapping("/welcome") 
public class HelloWorldController 

のweb.xmlが設定されている使用して

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

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

私は希望/ context/welcomeを入力してHelloWorldControllerを解決できるようにしたいが、これはうまくいきません。私は*を設定しようとしましたが、これはサーブレットのロードに失敗します。誰かがこのURLパターンが無効である理由を説明でき、* .htmで終わっているものの代わりに/ welcomeと/ welcomeのようなすべてのリクエストを処理するようにこのコントローラを設定する方法は大いに感謝します。 ASP.NET MVCでは、このようなコントローラマッピングの問題をデバッグするためのルーティングページが用意されていました。これをSpringで行う最良の方法は何ですか?

答えて

5

これを試してみてください:

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

パターン/ *サーブレットを通じてすべてを置くだろう。

パターンは、サーブレットをアプリケーションのデフォルトサーブレットにします。つまり、正確に一致しないすべてのパターンを取得します。

+0

オプトイン/これですべてが正常に動作します。 – dcompiled

0

それはserlvet仕様で指定された要件を満たしていなかったので、あなたの他のパタ​​ーンが有効ではありませんでした

* /使用してみてください:あなたはこれを使用している可能性が https://jira.sakaiproject.org/secure/attachment/16135/servlet-2_4-fr-spec.pdf

一つの問題は、JSファイルのためにその要求され、 cssファイルはディスパッチャを経由してルーティングされます。これらのファイルに対する要求を無視するには、springを設定する必要があります。

1

既存のコードでは、サーブレットマッピングに.htmを作成しているため、リクエストマッピングをRequestMapping( "/ welcome.htm")に変更することで解決できます。私たちのアプリのURLがどのようにすべきかを望んでいる。/を作成することの他の提案もあります。違いは/ *はあなたがヒットしたURLの任意のパターンを許可しますが、* .htmは他のパターンから解決することを制限します。

jsとcssはスプリングディスパッチャーサーブレットに依存していないため、jsまたはcssに問題があるとは思われません。 jsとcssは、サーブレットを配置しないで埋め込むことができます。スタンドアロンのhtmlにはjsとcssがあり、サーブレットではなくサーバーのコンテキストである必要があります。

関連する問題