回答:
実際、@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
アノテーションの属性を導入することもできます。単純化のためにがそれをしなかったかどうか疑問に思います