web-dev-qa-db-ja.com

同じサーブレットの多くのURLパターン

同じサーブレットを2つの異なるURLにマッピングする必要があります。プロジェクト全体を管理するためにnetbeans 7.0.1を使用したため、web.xmlファイルを変更するために使いやすいインターフェースを使用しました。 netbeansが作成したのはこれです:

<servlet-mapping>
    <servlet-name>fred</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>/url</url-pattern>
</servlet-mapping>

これはエラーを発生させることなくTomcat 5.5によって読み取られますが、2番目のパターンのみが機能し、最初のパターンは無視されます。

グーグル私はTomcatの正しい方法がこれであることを発見しました:

<servlet-mapping>
    <servlet-name>fred</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>fred</servlet-name>
    <url-pattern>/url</url-pattern>
</servlet-mapping>

だから、私の質問:これはTomcatのバグですか?他のコンテナはどの構文を受け入れますか?

34
eppesuig

コンテナの問題ではなく、コンテナ/ netbeansが使用しているサーブレットの仕様に関係があると思います。ネットBeanは、仕様2.5を使用してサーブレットマッピングを構築しているようであるため、

<servlet-mapping>
   <servlet-name>fred</servlet-name>
   <url-pattern>*.jsp</url-pattern>
   <url-pattern>/url</url-pattern>
</servlet-mapping>

詳細についてはこちらをご覧ください こちら 。それは言います

サーブレットスキーマの以前のバージョンでは、フィルターマッピングで使用できるURLパターンは1つだけです。複数のURLにマップされたフィルターの場合、マッピング句全体が不必要に繰り返されます。

44
Aravind A

Tomcatコンテナは3つのURLパターンをサポートします:

  1. 完全な文字シーケンス
  2. /*
  3. *. ext(スターは何でも意味する)

/*は、1つのフレームワークのみに推奨されます

複数のフレームワークを使用する場合は、.*

1
Satish Dodia