回答:
実際、@WebFilterアノテーションを使用してフィルターの実行順序を定義することはできません。ただし、web.xml使用量を最小限に抑えるには、すべてのフィルターに注釈を付けるだけで十分filterNameです。そのため、<filter>定義は必要なく<filter-mapping>、希望する順序で定義するだけです。
例えば、
@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}
中でweb.xmlちょうどこの:
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/url1/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>/url2/*</url-pattern>
</filter-mapping>
URLパターンをに保持したい場合は@WebFilter、そのままにすることができます。
@WebFilter(filterName="filter1", urlPatterns="/url1/*")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2", urlPatterns="/url2/*")
public class Filter2 implements Filter {}
しかし、XSDごとに必要なので、<url-pattern>inを保持する必要がありますweb.xmlが、空でもかまいません。
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern />
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern />
</filter-mapping>
それはの存在にチョークのでかかわらず、アプローチの、このすべては、バージョン7.0.28までのTomcatに失敗します<filter-mapping>なし<filter>。Tomcatの使用も参照してください。@ WebFilterは、web.xml内の<filter-mapping>では機能しません。
<url-pattern />JBoss EAP 6.1では使用できません- @WebFilter値が上書きされ、フィルターが実行されなくなります。
サーブレット3.0仕様は、アノテーションを介して宣言されたフィルターをコンテナーがどのように順序付けするべきかについてのヒントを提供していないようです。ただし、web.xmlファイルの宣言を使用してフィルターを順序付ける方法は明らかです。
安全である。相互依存関係があるweb.xmlファイル順序フィルターを使用します。web.xmlファイルを使用する必要性を最小限に抑えるために、フィルターをすべて順序に依存しないようにしてください。
orderネストされた@WebFilterMappingアノテーションの属性を導入することもできます。単純化のためにがそれをしなかったかどうか疑問に思います