1

周りを検索しましたが、これに対する決定的な答えは見つかりませんでした。

すべてのhttpリクエストをディスパッチャーサーブレットを介してルーティングし、次に特定のコントローラーにルーティングしようとしています。最終的には、リソース、AJAX、および別のリクエストを中央ポイントで処理できるようにしたいと考えています。

私は現在、これを行うためのURLマッピング/*を用意しています。私のコントローラーは@RequestMapping( "/ [My resource]。*")を使用して.htmリクエストをキャプチャします。残念ながら、SpringはRequestDispactcher.forwardを使用してInternalResourceViewResolverから.jspを解決しているようです。これにより、フロントコントローラーが再びヒットし、最終的に404エラーが発生します。

私の質問は、通常のビューリクエスト以外のHTTPリクエストを処理する汎用キャッチオールを設定できますか?

HTTPハンドラーは、リクエストを他のサーバーに渡し、画像やcssなどの内部および外部リソースを解決できる必要があります。

よろしく、アンディ

よろしく

4

2 に答える 2

1

より良いアイデアは、 のサーブレット マッピングDispatcherServletをの/代わりにに変更することです/*。これ/*は、JSPServlet マッピングがあるという事実にもかかわらず、jsp 転送でも見つかったように、すべてのリクエストがこのサーブレットに到達するためです。一方、/マッピングは、要求されたパスに対して特定のマッピングが見つからない場合にのみデフォルトになります。

于 2013-03-01T12:09:38.203 に答える
0

アプリサーブレットのマッピングをweb.xmlの/に保持します。以下のように。

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

他のリソースを解決するには、ディスパッチャサーブレットxmlに次のタグを追加します。ここでのリソースは、js、css、imagesを含むフォルダーです。これは、MavenWebアプリケーション構造のWebcontentフォルダーに格納されます。プロジェクトの構造に応じて変更してください。

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

これを試して。

于 2013-03-01T12:36:49.137 に答える