フィルターを URL のルートにマップするにはどうすればよいですか? 私は Tomcat 7.0.2 を使用しており、アプリケーションを ROOT.war としてデプロイしています。ウェルカム ページは sign_in.xhtml です。クライアントがサイトのルート (つまり、ドメイン名のみ) のリクエストを送信するたびに、またはクライアントが sign_in.xhtml をリクエストするときに、フィルターを実行したいと考えています。これが私がこれまでに持っているものです:
<filter>
<filter-name>My filter</filter-name>
<filter-class>com.myApp.myFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>My filter</filter-name>
<url-pattern>/sign_in.xhtml</url-pattern>
</filter-mapping>
sign_in.xhtml を直接リクエストすると、フィルターが正常に呼び出されますが、ルートでフィルターを呼び出すためのリクエストを取得する方法がわかりません。サーブレット仕様 (バージョン 3.0) によると
<url-pattern>/</url-pattern>
はデフォルトのサーブレットにマップされ、空の文字列はルートにマップされます。仕様の関連セクションは次のとおりです。
「空の文字列 ("") は、アプリケーションのコンテキスト ルート (つまり、http://host:port/ / の形式のリクエスト) に正確にマップされる特別な URL パターンです。この場合、パス情報は '/' であり、サーブレット パスとコンテキスト パスは空の文字列 ("") です。"
ただし、次の両方の URL パターンにより、Tomcat は例外をスローします。
<url-pattern></url-pattern>
<url-pattern>""</url-pattern>
誰かがこれに光を当てることができれば、本当に感謝しています。ありがとうございました。
アンドリュー