5

重複の可能性:
サーブレットマッピング/ vs / *

サーブレットURLマッピングの「/」と「/*」の違いは何ですか?

私は本の春を実際に読んでいるので、これらの言葉を見つけました:

次に、DispatcherServletによって処理されるURLを指定する必要があります。.htm、/、/appなどのURLパターンにマップされたDispatcherServletを見つけるのが一般的です。ただし、これらのURLパターンにはいくつかの問題があります。

  • * .htmパターンは、応答が常にHTML形式であることを意味します(第11章で学習するように、必ずしもそうであるとは限りません)。
  • / *にマッピングすることは、特定のタイプの応答を意味するものではありませんが、DispatcherServletがすべての要求を処理することを示します。そのため、画像やスタイルシートなどの静的コンテンツの提供が必要以上に難しくなります。
  • / appパターン(または同様のもの)は、Dispatcherサーブレットが提供するコンテンツを他のタイプのコンテンツと区別するのに役立ちます。ただし、URLに実装の詳細(具体的には/ appパス)が表示されます。これは、/appパスを非表示にする複雑なURL書き換え戦術につながります。

これらの欠陥のあるサーブレットマッピングスキームを使用するのではなく、次のようにDispatcherServletをマッピングすることをお勧めします。

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

DispatcherServletを/にマッピングすることにより、これがデフォルトのサーブレットであり、静的コンテンツの要求を含むすべての要求を処理する責任があると言っています。

上記の言葉によると、「/」と「/*」の両方がすべてのリクエストを処理するようです。

違いはなんですか?

4

1 に答える 1

3

/ 文字のみを含む文字列は、アプリケーションの「デフォルト」サーブレットを示します。この場合、サーブレット パスはリクエスト URI からコンテキスト パスを引いたものであり、パス情報は null です。&

* で始まる文字列。プレフィックスは拡張マッピングとして使用されます。

パターン /* は、サーブレットを介してすべてを強制します。

パターン / は、サーブレットをアプリのデフォルトのサーブレットにします。つまり、完全に一致する別のパターンがないすべてのパターンを選択します。

于 2012-03-19T14:24:43.007 に答える