2017-05-18 16 views
2

私はJavaサーブレットフィルタに関する不明な質問に対処しています。Javaサーブレットフィルタについての質問、不明確な回答

質問です:MyFilter1.classとMyFiler2:wf.jarが有効なウェブ-fragment.xmlと、次の2つのクラスを含んでいる次の構造

| – WEB-INF/classes/Myservlet.class 
| – WEB-INF/lib/wf.jar 

との戦争のファイルが与えられ

。クラス。上記のWebアプリケーションの

enter image description here

つのアクセス「/」、意志をフィルタリングします。

enter image description here

には、次のいくつかのコードスニペットあり、次のように ウェブ-fragment.xmlがあります実行される?

A. フィルタは実行されません。

B. MyFilter1

C. MyFilter2

はD. MyFilter1とMyFilter2

私は、正しい答えがD(両フィルタ)になることを賭けるが、解決策があると言います権利はC(説明なし)です。 なぜMyFilter2だけを実行する必要がありますか?

おかげ

答えて

1

web-fragment.xmlmetadata-complete=trueです。したがって、jarのクラスの注釈は評価されず、フラグメントに定義されたMyFilter2のみが登録されます。

+0

ありがとうございます...今は本当に明らかです。 – Alessandro

1

それはあなたが、それは第二のフィルターに行きます連鎖さそう、それはないでしょう、あなたが最初のフィルタでchain.doFilter(request,response)をしたかどうかに依存します。

記述子は、両方とも同じ名前で定義されている場合、アノテーションよりも優先順位が高くなります。これは、サーブレットとフィルタの両方に適用されます。

"/"でURLにアクセスしようとすると、まずMyFilter2が表示されます。

+0

答えてくれてありがとうございます。だから、質問は 'chain.doFilter'について話していないので、MyFilter2だけを実行しますか?そうじゃない? – Alessandro

+0

私の答えを編集し、一度チェックしてください –

関連する問題