2012-08-08 9 views
10

要求に一致するweb.xml内に2つのサーブレットマッピングがあるとどうなりますか?それは最も具体的な選択ですか?要求に一致するweb.xml内に2つのサーブレットマッピングがあるとどうなりますか?

たとえば、私は次のXMLを持っていて、リクエストが..../somethingservletまたはeverything_elseサーブレットに行く間に何かに来るのですか?

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

    <servlet-mapping> 
    <servlet-name>everything_else</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
+0

「/ *」上にサーブレットを持っているのは、ちょっと変わったデザインです。おそらくそれは実際にフィルタであるべきですか? – BalusC

答えて

11

最初に成功した一致が使用されます。

サーブレットコンテナには、特定のマッピング規則があります。サーブレット2.5仕様章SRV.11を読む

サーブレットにマッピングするために使用される経路要求 オブジェクトマイナスコンテキストパスとパスパラメータからの要求URLです。下記のURLパスマッピング が順番に使用されます。ノーさらに 試合で使用されて最初に成功したマッチは未遂:

  1. コンテナはサーブレットのパスへの要求のパスの正確な一致を見つけようとします。一致が成功すると、 サーブレットが選択されます。
  2. コンテナは最も長いパスプレフィックスと再帰的に一致しようとします。これは、 のように、パスのセパレータを として '/'文字を使用して、一度にディレクトリツリーを1つ下に移動することによって実行されます。最長の一致が選択されたサーブレットを決定します。
  3. URLパスの最後のセグメントに拡張子(例:.jsp)が含まれている場合、サーブレット コンテナは、拡張機能のリクエストを処理するサーブレットと一致しようとします。 拡張子は、最後の '。'文字の後の最後のセグメントの一部として定義されます。
  4. 上記の3つのルールのいずれもがサーブレットの一致を引き起こさない場合、コンテナは要求されたリソースに適切なコンテンツを配信しようとします( )。アプリケーションに対して「デフォルト」の サーブレットが定義されている場合は、そのサーブレットが使用されます。
関連する問題