2017-01-09 18 views
0

私はクラスMyFilterを持っていて、javax.servlet.Filterを実装しています。 Tomcatはweb.xmlの設定に基づいてこれのインスタンスを1つ作成します。このフィルタは、すべての要求に関する統計情報を収集し(アプリケーションの起動以降)、メンバ変数に格納します。プログラムでサーブレットフィルタインスタンスを取得するにはどうすればよいですか?

これらの統計情報をWebページに表示したいとします。 Tomcatによって作成されたMyFilterのインスタンスを取得するにはどうすればよいですか?

documentation

答えて

1

から引用:

すべてのフィルタは、それが その初期化パラメータ、それは使用することができ ServletContextへの参照を取得することができ、そこからに、FilterConfigオブジェクトへのアクセスを有します。

なぜ必要なデータをServletContext属性に格納しないのですか?次のように、フィルタを保存することができます

@Override 
public void init(final FilterConfig config) throws ServletException 
{ 
    // Store our instance in the servlet context for usage by servlets. 
    final ServletContext context = config.getServletContext(); 
    context.setAttribute("MyFilter", this); 
} 

をしてから、同じ文脈でサーブレットで:

Filter filter = (Filter)getServletContext().getAttribute("MyFilter"); 
+0

'FilterRegistration'が、残念ながら、フィルタのインスタンスを持っていない、唯一のフィルタ名、クラス名と構成。 –

+0

わかりませんでした。それでは、私の最初の主張を考えてみてください。 –

関連する問題