0

web.xml特定のサーブレットフィルタを1回だけ実行する必要があることをで定義する方法はありますか?

4

2 に答える 2

0

ラウンドアバウトの方法は、クラス変数を持ち、最初のアクセス時にそれを設定し、この変数をチェックする'if'ブロックにすべての関数型コードを含めることです。

于 2012-05-16T17:21:57.797 に答える
0

いいえ、Filterありません。何Filterをしていても、代わりに行う必要がありServletContextListenerます。

@WebListener
public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        // Do stuff during server startup.
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // Do stuff during server shutdown.
    }

}

まだサーブレット3.0を使用していない場合は、次のように古い方法でサーブレット3.0を削除@WebListenerして登録します。web.xml

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>

を使用することを本当に主張する場合は、ジョブFilterのメソッドを悪用して、メソッドを呼び出すだけで済みます。init()chain.doFilter(request, response)doFilter()

于 2012-05-16T17:21:37.983 に答える